def test_get_aggregations(self): ds = DruidDatasource(datasource_name="datasource") metrics_dict = { "sum1": DruidMetric( metric_name="sum1", metric_type="doubleSum", json=json.dumps({ "type": "doubleSum", "name": "sum1" }), ), "sum2": DruidMetric( metric_name="sum2", metric_type="doubleSum", json=json.dumps({ "type": "doubleSum", "name": "sum2" }), ), "div1": DruidMetric( metric_name="div1", metric_type="postagg", json=json.dumps({ "fn": "/", "type": "arithmetic", "name": "div1", "fields": [ { "fieldName": "sum1", "type": "fieldAccess" }, { "fieldName": "sum2", "type": "fieldAccess" }, ], }), ), } metric_names = ["sum1", "sum2"] aggs = ds.get_aggregations(metrics_dict, metric_names) expected_agg = { name: metrics_dict[name].json_obj for name in metric_names } self.assertEqual(expected_agg, aggs) metric_names = ["sum1", "col1"] self.assertRaises(SupersetException, ds.get_aggregations, metrics_dict, metric_names) metric_names = ["sum1", "div1"] self.assertRaises(SupersetException, ds.get_aggregations, metrics_dict, metric_names)
def test_get_aggregations(self): ds = DruidDatasource(datasource_name='datasource') metrics_dict = { 'sum1': DruidMetric( metric_name='sum1', metric_type='doubleSum', json=json.dumps({ 'type': 'doubleSum', 'name': 'sum1' }), ), 'sum2': DruidMetric( metric_name='sum2', metric_type='doubleSum', json=json.dumps({ 'type': 'doubleSum', 'name': 'sum2' }), ), 'div1': DruidMetric( metric_name='div1', metric_type='postagg', json=json.dumps({ 'fn': '/', 'type': 'arithmetic', 'name': 'div1', 'fields': [ { 'fieldName': 'sum1', 'type': 'fieldAccess', }, { 'fieldName': 'sum2', 'type': 'fieldAccess', }, ], }), ), } metric_names = ['sum1', 'sum2'] aggs = ds.get_aggregations(metrics_dict, metric_names) expected_agg = { name: metrics_dict[name].json_obj for name in metric_names } self.assertEqual(expected_agg, aggs) metric_names = ['sum1', 'col1'] self.assertRaises(SupersetException, ds.get_aggregations, metrics_dict, metric_names) metric_names = ['sum1', 'div1'] self.assertRaises(SupersetException, ds.get_aggregations, metrics_dict, metric_names)
def test_get_aggregations(self): ds = DruidDatasource(datasource_name='datasource') metrics_dict = { 'sum1': DruidMetric( metric_name='sum1', metric_type='doubleSum', json=json.dumps({'type': 'doubleSum', 'name': 'sum1'}), ), 'sum2': DruidMetric( metric_name='sum2', metric_type='doubleSum', json=json.dumps({'type': 'doubleSum', 'name': 'sum2'}), ), 'div1': DruidMetric( metric_name='div1', metric_type='postagg', json=json.dumps({ 'fn': '/', 'type': 'arithmetic', 'name': 'div1', 'fields': [ { 'fieldName': 'sum1', 'type': 'fieldAccess', }, { 'fieldName': 'sum2', 'type': 'fieldAccess', }, ], }), ), } metric_names = ['sum1', 'sum2'] aggs = ds.get_aggregations(metrics_dict, metric_names) expected_agg = {name: metrics_dict[name].json_obj for name in metric_names} self.assertEqual(expected_agg, aggs) metric_names = ['sum1', 'col1'] self.assertRaises( SupersetException, ds.get_aggregations, metrics_dict, metric_names) metric_names = ['sum1', 'div1'] self.assertRaises( SupersetException, ds.get_aggregations, metrics_dict, metric_names)