Panoramix v0.10.1 Panoramix View Source
Post a query to Druid Broker or request its status.
Use Panoramix.Query to build a query.
Examples
Build a query like this:
use Panoramix
q = from "my_datasource",
query_type: "timeseries",
intervals: ["2019-03-01T00:00:00+00:00/2019-03-04T00:00:00+00:00"],
granularity: :day,
filter: dimensions.foo == "bar",
aggregations: [event_count: count(),
unique_id_count: hyperUnique(:user_unique)]
And then send it:
Panoramix.post_query(q, :default)
Where :default
is a configuration profile pointing to your Druid server.
The default value for the profile argument is :default
, so if you
only need a single configuration you can omit it:
Panoramix.post_query(q)
Response example:
{:ok,
[
%{
"result" => %{
"event_count" => 7544,
"unique_id_count" => 43.18210933535
},
"timestamp" => "2019-03-01T00:00:00.000Z"
},
%{
"result" => %{
"event_count" => 1051,
"unique_id_count" => 104.02052398847
},
"timestamp" => "2019-03-02T00:00:00.000Z"
},
%{
"result" => %{
"event_count" => 4591,
"unique_id_count" => 79.19885795313
},
"timestamp" => "2019-03-03T00:00:00.000Z"
}
]}
To request status from Broker run
Panoramix.status(:default)
Link to this section Summary
Functions
Format a date or a datetime into a format that Druid expects
Link to this section Functions
Link to this function
format_time!(datetime) View Source
Format a date or a datetime into a format that Druid expects.
Examples
iex> Panoramix.format_time! ~D[2018-07-20]
"2018-07-20"
iex> Panoramix.format_time!(
...> Timex.to_datetime({{2018,07,20},{1,2,3}}))
"2018-07-20T01:02:03+00:00"
Link to this function
post_query(query, profile \\ :default)
View Source
post_query(query, profile \\ :default)
View Source
post_query(
%Panoramix.Query{
aggregations: term(),
analysis_types: term(),
bound: term(),
context: term(),
data_source: term(),
dimension: term(),
dimensions: term(),
filter: term(),
granularity: term(),
intervals: term(),
limit: term(),
limit_spec: term(),
merge: term(),
metric: term(),
post_aggregations: term(),
query: term(),
query_type: term(),
search_dimensions: term(),
sort: term(),
threshold: term(),
to_include: term(),
virtual_columns: term()
},
atom()
) ::
{:ok, term()}
| {:error, HTTPoison.Error.t() | Jason.DecodeError.t() | Panoramix.Error.t()}
post_query( %Panoramix.Query{ aggregations: term(), analysis_types: term(), bound: term(), context: term(), data_source: term(), dimension: term(), dimensions: term(), filter: term(), granularity: term(), intervals: term(), limit: term(), limit_spec: term(), merge: term(), metric: term(), post_aggregations: term(), query: term(), query_type: term(), search_dimensions: term(), sort: term(), threshold: term(), to_include: term(), virtual_columns: term() }, atom() ) :: {:ok, term()} | {:error, HTTPoison.Error.t() | Jason.DecodeError.t() | Panoramix.Error.t()}
Link to this function
post_query!(query, profile \\ :default)
View Source
post_query!(query, profile \\ :default)
View Source
post_query!(
%Panoramix.Query{
aggregations: term(),
analysis_types: term(),
bound: term(),
context: term(),
data_source: term(),
dimension: term(),
dimensions: term(),
filter: term(),
granularity: term(),
intervals: term(),
limit: term(),
limit_spec: term(),
merge: term(),
metric: term(),
post_aggregations: term(),
query: term(),
query_type: term(),
search_dimensions: term(),
sort: term(),
threshold: term(),
to_include: term(),
virtual_columns: term()
},
atom()
) :: term()
post_query!( %Panoramix.Query{ aggregations: term(), analysis_types: term(), bound: term(), context: term(), data_source: term(), dimension: term(), dimensions: term(), filter: term(), granularity: term(), intervals: term(), limit: term(), limit_spec: term(), merge: term(), metric: term(), post_aggregations: term(), query: term(), query_type: term(), search_dimensions: term(), sort: term(), threshold: term(), to_include: term(), virtual_columns: term() }, atom() ) :: term()
Link to this function
status(profile \\ :default)
View Source
status(profile \\ :default)
View Source
status(atom()) ::
{:ok, term()}
| {:error, HTTPoison.Error.t() | Jason.DecodeError.t() | Panoramix.Error.t()}
status(atom()) :: {:ok, term()} | {:error, HTTPoison.Error.t() | Jason.DecodeError.t() | Panoramix.Error.t()}
Link to this function