Slackbot
02/23/2023, 12:15 PMBibek Sahoo
02/23/2023, 12:22 PMSELECT column1, column2
FROM (
SELECT column1, column2 FROM table1
UNION ALL
SELECT column1, column2 FROM table2
UNION ALL
SELECT column1, column2 FROM table3
)
Unions allow you to treat two or more tables as a single datasource. In SQL, this is done with the UNION ALL operator applied directly to tables, called a "table-level union". In native queries, this is done with a “union” datasource.
https://druid.apache.org/docs/latest/querying/datasource.html#unionKumar Saket
02/23/2023, 12:23 PMdatasource of type table and not query : Check this thread: https://github.com/apache/druid/issues/8122Kumar Saket
02/23/2023, 12:24 PMBibek Sahoo
02/23/2023, 12:25 PMBibek Sahoo
02/23/2023, 12:27 PMBibek Sahoo
02/23/2023, 12:27 PMKumar Saket
02/23/2023, 12:29 PMKumar Saket
02/23/2023, 12:30 PM{
"queryType": "scan",
"dataSource": {
"type": "union",
"dataSources": [
{
"type": "query",
"query": {
"queryType": "groupBy",
"dataSource": "multi_tenant_validated_output",
"granularity": "day",
"dimensions": [
"column_name"
],
"intervals": "2015-08-28/2022-10-20",
"aggregations": [
{
"type": "filtered",
"filter": {
"type": "selector",
"dimension": "column_name",
"value": "column_name_value"
},
"aggregator": {
"type": "doubleSum",
"fieldName": "double_sum",
"name": "sum_expected"
}
},
{
"type": "filtered",
"filter": {
"type": "selector",
"dimension": "column_name",
"value": "column_name_value"
},
"aggregator": {
"type": "doubleSum",
"fieldName": "count",
"name": "count_expected"
}
},
{
"type": "filtered",
"filter": {
"type": "selector",
"dimension": "column_name",
"value": "column_name_value"
},
"aggregator": {
"type": "doubleSum",
"fieldName": "double_sum",
"name": "sum_actual"
}
},
{
"type": "filtered",
"filter": {
"type": "selector",
"dimension": "column_name",
"value": "column_name_value"
},
"aggregator": {
"type": "doubleSum",
"fieldName": "count",
"name": "count_actual"
}
}
],
"postAggregations": [
{
"type": "arithmetic",
"name": "mean_expected",
"fn": "/",
"fields": [
{
"type": "fieldAccess",
"fieldName": "sum_expected"
},
{
"type": "fieldAccess",
"fieldName": "count_expected"
}
]
},
{
"type": "arithmetic",
"name": "mean_actual",
"fn": "/",
"fields": [
{
"type": "fieldAccess",
"fieldName": "sum_actual"
},
{
"type": "fieldAccess",
"fieldName": "count_actual"
}
]
},
{
"type": "arithmetic",
"name": "diff_of_mean",
"fn": "-",
"fields": [
{
"type": "fieldAccess",
"fieldName": "mean_expected"
},
{
"type": "fieldAccess",
"fieldName": "mean_actual"
}
]
}
],
"filter": {
"dimension": "column_name",
"type": "in",
"values": [
"price",
"beds",
"baths",
"area",
"zestimate",
"timeOfExtraction",
"daysOnZillow",
"datePriceChanged",
"rentZestimate",
"taxAssessedValue",
"lotAreaValue",
"priceReductionStr",
"lotAreaRaw",
"priceReductionRatio",
"latitude",
"longitude",
"prediction"
]
},
"columns": [
"column_name",
"mean_expected",
"mean_actual",
"diff_of_mean",
"data_type"
]
}
},
{
"type": "query",
"query": {
"queryType": "groupBy",
"dataSource": "multi_tenant_validated_output",
"granularity": "day",
"dimensions": [
"column_name"
],
"intervals": "2015-08-28/2022-10-20",
"aggregations": [
{
"type": "filtered",
"filter": {
"type": "selector",
"dimension": "column_name",
"value": "column_name_value"
},
"aggregator": {
"type": "longSum",
"fieldName": "long_sum",
"name": "sum_expected"
}
},
{
"type": "filtered",
"filter": {
"type": "selector",
"dimension": "column_name",
"value": "column_name_value"
},
"aggregator": {
"type": "longSum",
"fieldName": "count",
"name": "count_expected"
}
},
{
"type": "filtered",
"filter": {
"type": "selector",
"dimension": "column_name",
"value": "column_name_value"
},
"aggregator": {
"type": "longSum",
"fieldName": "long_sum",
"name": "sum_actual"
}
},
{
"type": "filtered",
"filter": {
"type": "selector",
"dimension": "column_name",
"value": "column_name_value"
},
"aggregator": {
"type": "longSum",
"fieldName": "count",
"name": "count_actual"
}
}
],
"postAggregations": [
{
"type": "arithmetic",
"name": "mean_expected",
"fn": "/",
"fields": [
{
"type": "fieldAccess",
"fieldName": "sum_expected"
},
{
"type": "fieldAccess",
"fieldName": "count_expected"
}
]
},
{
"type": "arithmetic",
"name": "mean_actual",
"fn": "/",
"fields": [
{
"type": "fieldAccess",
"fieldName": "sum_actual"
},
{
"type": "fieldAccess",
"fieldName": "count_actual"
}
]
},
{
"type": "arithmetic",
"name": "diff_of_mean",
"fn": "-",
"fields": [
{
"type": "fieldAccess",
"fieldName": "mean_expected"
},
{
"type": "fieldAccess",
"fieldName": "mean_actual"
}
]
}
],
"filter": {
"dimension": "column_name",
"type": "in",
"values": [
"id",
"isUndisclosedAddress",
"isZillowOwned",
"isSaved",
"isUserClaimingOwner",
"isUserConfirmedClaim",
"shouldShowZestimateAsPrice",
"has3DModel",
"hasVideo",
"isHomeRec",
"hasAdditionalAttributions",
"isFeaturedListing",
"list",
"relaxed"
]
},
"columns": [
"column_name",
"mean_expected",
"mean_actual",
"diff_of_mean",
"data_type"
]
}
}
]
},
"columns": [
"column_name",
"mean_expected",
"mean_actual",
"diff_of_mean",
"data_type"
],
"intervals": "2015-08-28/2022-10-20"
}Kumar Saket
02/23/2023, 12:30 PMAbhishek Agarwal
02/23/2023, 12:58 PM(query 1) UNION ALL (query 2). Otherwise, you can issue these queries in a sequence which is really how the above query runs within druid.Kumar Saket
02/23/2023, 1:05 PMAbhishek Agarwal
02/23/2023, 2:49 PMApoorv Gupta
02/23/2023, 4:19 PMdataSource.”Apoorv Gupta
02/23/2023, 5:28 PMAbhishek Agarwal
02/24/2023, 4:43 AMApoorv Gupta
02/24/2023, 10:31 AMGian Merlino
03/01/2023, 1:31 AMquery datasources can appear anywhere except underneath a union. The ones underneath a union need to be tableApoorv Gupta
03/01/2023, 9:48 AMGian Merlino
03/07/2023, 1:42 PM