Пример #1
0
    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)
Пример #3
0
    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)