Skip to content

Commit

Permalink
query variables - chained variables
Browse files Browse the repository at this point in the history
  • Loading branch information
jbguerraz committed Dec 30, 2020
1 parent 54c4db8 commit c01b949
Show file tree
Hide file tree
Showing 8 changed files with 529 additions and 589 deletions.
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@
- Query builder UI: done
- Alerting: done
- Query backend: done (sql, timeseries, topn, groupby, timeboundary, segmentmetadata, datasourcemetadata, scan, search)
- Explore advanced support: "done" (standard: done, advanced: todo? any specific need?)
- Variables support: WIP (done: Grafana global variables replacement, wip: query variables(chained variables not refreshing))
- Explore advanced support: done (standard: done, advanced: todo? any specific need?)
- Variables support: done (Grafana global variables replacement, query variables)
- Extensions support: todo

## What is this Druid-Grafana plugin?

Expand Down
40 changes: 21 additions & 19 deletions dashboard.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"gnetId": null,
"graphTooltip": 0,
"id": 1,
"iteration": 1608248006034,
"iteration": 1609339085936,
"links": [],
"panels": [
{
Expand Down Expand Up @@ -54,7 +54,7 @@
"options": {
"showHeader": true
},
"pluginVersion": "7.3.3",
"pluginVersion": "7.3.6",
"targets": [
{
"builder": {
Expand Down Expand Up @@ -133,7 +133,7 @@
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "7.3.3",
"pluginVersion": "7.3.6",
"pointradius": 2,
"points": false,
"renderer": "flot",
Expand Down Expand Up @@ -271,7 +271,7 @@
},
"showUnfilled": true
},
"pluginVersion": "7.3.3",
"pluginVersion": "7.3.6",
"targets": [
{
"builder": {
Expand Down Expand Up @@ -383,7 +383,7 @@
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "7.3.3",
"pluginVersion": "7.3.6",
"pointradius": 2,
"points": false,
"renderer": "flot",
Expand Down Expand Up @@ -520,7 +520,7 @@
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "7.3.3",
"pluginVersion": "7.3.6",
"pointradius": 2,
"points": false,
"renderer": "flot",
Expand Down Expand Up @@ -665,7 +665,7 @@
"options": {
"showHeader": true
},
"pluginVersion": "7.3.3",
"pluginVersion": "7.3.6",
"targets": [
{
"builder": {
Expand Down Expand Up @@ -749,7 +749,7 @@
"options": {
"showHeader": true
},
"pluginVersion": "7.3.3",
"pluginVersion": "7.3.6",
"targets": [
{
"builder": {
Expand Down Expand Up @@ -815,7 +815,7 @@
"options": {
"showHeader": true
},
"pluginVersion": "7.3.3",
"pluginVersion": "7.3.6",
"targets": [
{
"builder": {
Expand Down Expand Up @@ -878,7 +878,7 @@
"showHeader": true,
"sortBy": []
},
"pluginVersion": "7.3.3",
"pluginVersion": "7.3.6",
"targets": [
{
"builder": {
Expand Down Expand Up @@ -932,12 +932,12 @@
{
"allValue": null,
"current": {
"selected": false,
"text": "Belgium",
"value": "Belgium"
"selected": true,
"text": "Belarus",
"value": "Belarus"
},
"datasource": "Druid",
"definition": "okkkkk",
"definition": "{\"builder\":{\"query\":\"SELECT DISTINCT countryName FROM wikipedia WHERE countryName IS NOT NULL\",\"queryType\":\"sql\"},\"settings\":{\"contextParameters\":[{\"name\":\"AA\",\"value\":\"BB\"}],\"format\":\"wide\"}}",
"error": null,
"hide": 0,
"includeAll": false,
Expand Down Expand Up @@ -1476,6 +1476,7 @@
"query": "SELECT DISTINCT countryName FROM wikipedia WHERE countryName IS NOT NULL",
"queryType": "sql"
},
"expr": "{\"builder\":{\"query\":\"SELECT DISTINCT countryName FROM wikipedia WHERE countryName IS NOT NULL\",\"queryType\":\"sql\"},\"settings\":{\"contextParameters\":[{\"name\":\"AA\",\"value\":\"BB\"}],\"format\":\"wide\"}}",
"settings": {
"contextParameters": [
{
Expand All @@ -1500,11 +1501,11 @@
"allValue": null,
"current": {
"selected": false,
"text": "Antwerp",
"value": "Antwerp"
"text": "Gomel",
"value": "Gomel"
},
"datasource": "Druid",
"definition": "ok",
"definition": "{\"builder\":{\"query\":\"SELECT DISTINCT cityName FROM wikipedia WHERE wikipedia.cityName IS NOT NULL AND wikipedia.countryName = '${country}'\",\"queryType\":\"sql\"},\"settings\":{\"contextParameters\":[{\"name\":\"a\",\"value\":\"b\"}],\"format\":\"wide\"}}",
"error": null,
"hide": 0,
"includeAll": false,
Expand All @@ -1517,6 +1518,7 @@
"query": "SELECT DISTINCT cityName FROM wikipedia WHERE wikipedia.cityName IS NOT NULL AND wikipedia.countryName = '${country}'",
"queryType": "sql"
},
"expr": "{\"builder\":{\"query\":\"SELECT DISTINCT cityName FROM wikipedia WHERE wikipedia.cityName IS NOT NULL AND wikipedia.countryName = '${country}'\",\"queryType\":\"sql\"},\"settings\":{\"contextParameters\":[{\"name\":\"a\",\"value\":\"b\"}],\"format\":\"wide\"}}",
"settings": {
"contextParameters": [
{
Expand Down Expand Up @@ -1545,7 +1547,7 @@
},
"timepicker": {},
"timezone": "",
"title": "New dashboard Copy",
"title": "Grafadruid Wikipedia Sample",
"uid": "_GuEjEtGk",
"version": 17
"version": 2
}
2 changes: 1 addition & 1 deletion pkg/druid.go
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ func (ds *druidDatasource) queryVariable(qry []byte, s *druidInstanceSettings) (

func (ds *druidDatasource) prepareVariableResponse(resp *druidResponse, settings map[string]interface{}) ([]grafanaMetricFindValue, error) {
// refactor: probably some method that returns a container (make([]whattypeever, 0)) and its related appender func based on column type)
var response []grafanaMetricFindValue
response := []grafanaMetricFindValue{}
for ic, c := range resp.Columns {
for _, r := range resp.Rows {
switch c.Type {
Expand Down
2 changes: 2 additions & 0 deletions src/DruidQueryEditor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,14 @@ export class QueryEditor extends PureComponent<Props, State> {

onBuilderOptionsChange = (queryBuilderOptions: QueryBuilderOptions) => {
const { query, onChange, onRunQuery } = this.props;
query.expr = JSON.stringify({ builder: query.builder, settings: query.settings });
onChange({ ...query, ...queryBuilderOptions });
onRunQuery();
};

onSettingsOptionsChange = (querySettingsOptions: QuerySettingsOptions) => {
const { query, onChange, onRunQuery } = this.props;
query.expr = JSON.stringify({ builder: query.builder, settings: query.settings });
onChange({ ...query, ...querySettingsOptions });
onRunQuery();
};
Expand Down
2 changes: 2 additions & 0 deletions src/QueryEditor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,14 @@ export class QueryEditor extends PureComponent<Props, State> {

onBuilderOptionsChange = (queryBuilderOptions: QueryBuilderOptions) => {
const { query, onChange, onRunQuery } = this.props;
query.expr = JSON.stringify({ builder: query.builder, settings: query.settings });
onChange({ ...query, ...queryBuilderOptions });
onRunQuery();
};

onSettingsOptionsChange = (querySettingsOptions: QuerySettingsOptions) => {
const { query, onChange, onRunQuery } = this.props;
query.expr = JSON.stringify({ builder: query.builder, settings: query.settings });
onChange({ ...query, ...querySettingsOptions });
onRunQuery();
};
Expand Down
6 changes: 4 additions & 2 deletions src/VariableQueryEditor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,14 @@ export class VariableQueryEditor extends PureComponent<Props, State> {

onBuilderOptionsChange = (queryBuilderOptions: QueryBuilderOptions) => {
const { query, onChange } = this.props;
onChange({ ...query, ...queryBuilderOptions }, '$country');
query.expr = JSON.stringify({ builder: query.builder, settings: query.settings });
onChange({ ...query, ...queryBuilderOptions }, query.expr);
};

onSettingsOptionsChange = (querySettingsOptions: QuerySettingsOptions) => {
const { query, onChange } = this.props;
onChange({ ...query, ...querySettingsOptions }, '$country');
query.expr = JSON.stringify({ builder: query.builder, settings: query.settings });
onChange({ ...query, ...querySettingsOptions }, query.expr);
};

builderOptions = (): QueryBuilderOptions => {
Expand Down
1 change: 1 addition & 0 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { ConnectionSettings } from './configuration/ConnectionSettings/types';
export interface DruidQuery extends DataQuery {
builder: any;
settings: QuerySettings;
expr: string;
}

export interface DruidSettings extends DataSourceJsonData {
Expand Down
Loading

0 comments on commit c01b949

Please sign in to comment.