Panoramix (Panoramix v0.13.2) 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"
}
]}
You can also build a JSON query yourself by passing it as a map to
post_query
:
Panoramix.post_query(%{queryType: "timeBoundary", dataSource: "my_datasource"})
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
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"
Specs
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() } | map(), atom() ) :: {:ok, term()} | {:error, HTTPoison.Error.t() | Jason.DecodeError.t() | Panoramix.Error.t()}
Specs
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() } | map(), atom() ) :: term()
Specs
status(atom()) :: {:ok, term()} | {:error, HTTPoison.Error.t() | Jason.DecodeError.t() | Panoramix.Error.t()}