コード例 #1
0
ファイル: test_query.py プロジェクト: ustcldf/pydruid
    def test_union_datasource(self):
        # Given
        expected_query_dict = {"queryType": None, "dataSource": "things"}
        builder = QueryBuilder()
        # when
        builder_dict = {"datasource": "things"}
        query = builder.build_query(None, builder_dict)
        # then
        assert query.query_dict == expected_query_dict

        # Given
        expected_query_dict = {
            "queryType": None,
            "dataSource": {
                "type": "union",
                "dataSources": ["things", "others", "more"],
            },
        }
        builder = QueryBuilder()
        # when
        builder_dict = {"datasource": ["things", "others", "more"]}
        query = builder.build_query(None, builder_dict)
        # then
        assert query.query_dict == expected_query_dict

        # Given check that it rejects non-string items
        builder = QueryBuilder()
        builder_dict = {"datasource": ["things", 123]}
        with pytest.raises(ValueError):
            query = builder.build_query(None, builder_dict)
コード例 #2
0
ファイル: test_query.py プロジェクト: vikramarsid/pydruid
    def test_build_query_none_type(self):
        # given
        expected_query_dict = {
            "queryType": None,
            "dataSource": "things",
            "aggregations": [{"fieldName": "thing", "name": "count", "type": "count"}],
            "filter": {"dimension": "one", "type": "selector", "value": 1},
            "having": {"aggregation": "sum", "type": "greaterThan", "value": 1},
            "dimension": "dim1",
        }

        builder = QueryBuilder()

        # when
        builder_dict = {
            "datasource": "things",
            "aggregations": {"count": aggregators.count("thing")},
            "filter": filters.Dimension("one") == 1,
            "having": having.Aggregation("sum") > 1,
            "dimension": "dim1",
        }
        query = builder.build_query(None, builder_dict)

        # then
        assert query.query_dict == expected_query_dict

        # you should be able to pass `None` to dimension/having/filter
        for v in ["dimension", "having", "filter"]:
            expected_query_dict[v] = None
            builder_dict[v] = None

            query = builder.build_query(None, builder_dict)

            assert query.query_dict == expected_query_dict
コード例 #3
0
ファイル: test_query.py プロジェクト: nivye/pydruid
    def test_union_datasource(self):
        # Given
        expected_query_dict = {
            'queryType': None,
            'dataSource': 'things',
        }
        builder = QueryBuilder()
        # when
        builder_dict = {'datasource': 'things'}
        query = builder.build_query(None, builder_dict)
        # then
        assert query.query_dict == expected_query_dict

        # Given
        expected_query_dict = {
            'queryType': None,
            'dataSource': {
                'type': 'union',
                'dataSources': ['things', 'others', 'more']
            }
        }
        builder = QueryBuilder()
        # when
        builder_dict = {'datasource': ['things', 'others', 'more']}
        query = builder.build_query(None, builder_dict)
        # then
        assert query.query_dict == expected_query_dict

        # Given check that it rejects non-string items
        builder = QueryBuilder()
        builder_dict = {'datasource': ['things', 123]}
        with pytest.raises(ValueError):
            query = builder.build_query(None, builder_dict)
コード例 #4
0
    def test_build_query_none_type(self):
        # given
        expected_query_dict = {
            'queryType':
            None,
            'dataSource':
            'things',
            'aggregations': [{
                'fieldName': 'thing',
                'name': 'count',
                'type': 'count'
            }],
            'filter': {
                'dimension': 'one',
                'type': 'selector',
                'value': 1
            },
            'having': {
                'aggregation': 'sum',
                'type': 'greaterThan',
                'value': 1
            },
            'dimension':
            'dim1',
        }

        builder = QueryBuilder()

        # when
        builder_dict = {
            'datasource': 'things',
            'aggregations': {
                'count': aggregators.count('thing'),
            },
            'filter': filters.Dimension('one') == 1,
            'having': having.Aggregation('sum') > 1,
            'dimension': 'dim1',
        }
        query = builder.build_query(None, builder_dict)

        # then
        assert query.query_dict == expected_query_dict

        # you should be able to pass `None` to dimension/having/filter
        for v in ['dimension', 'having', 'filter']:
            expected_query_dict[v] = None
            builder_dict[v] = None

            query = builder.build_query(None, builder_dict)

            assert query.query_dict == expected_query_dict
コード例 #5
0
ファイル: test_query.py プロジェクト: singular-labs/pydruid
    def test_build_query(self):
        # given
        expected_query_dict = {
            'queryType': None,
            'dataSource': 'things',
            'aggregations': [{'fieldName': 'thing', 'name': 'count', 'type': 'count'}],
            'postAggregations': [{
                'fields': [{
                    'fieldName': 'sum', 'type': 'fieldAccess',
                }, {
                    'fieldName': 'count', 'type': 'fieldAccess',
                }],
                'fn': '/',
                'name': 'avg',
                'type': 'arithmetic',
            }],
            'pagingSpec': {'pagingIdentifies': {}, 'threshold': 1},
            'filter': {'dimension': 'one', 'type': 'selector', 'value': 1},
            'having': {'aggregation': 'sum', 'type': 'greaterThan', 'value': 1},
            'new_key': 'value',
            'virtualColumns': [{
                    'type': 'expression', 'name': 'foo', 'expression': "concat('foo' + page)", 'outputType': 'STRING'
                }],
        }

        builder = QueryBuilder()

        # when
        query = builder.build_query(None, {
            'datasource': 'things',
            'aggregations': {
                'count': aggregators.count('thing'),
            },
            'post_aggregations': {
                'avg': (postaggregator.Field('sum') /
                        postaggregator.Field('count')),
            },
            'paging_spec': {
                'pagingIdentifies': {},
                'threshold': 1,
            },
            'filter': filters.Dimension('one') == 1,
            'having': having.Aggregation('sum') > 1,
            'new_key': 'value',
            'virtualColumns':
                [VirtualColumn(type='expression', name='foo', expression="concat('foo' + page)", outputType='STRING')]
        })

        # then
        assert query.query_dict == expected_query_dict
コード例 #6
0
ファイル: test_query.py プロジェクト: druid-io/pydruid
    def test_union_datasource(self):
        # Given
        expected_query_dict = {'queryType': None, 'dataSource': 'things',}
        builder = QueryBuilder()
        # when
        builder_dict = {'datasource': 'things'}
        query = builder.build_query(None, builder_dict)
        # then
        assert query.query_dict == expected_query_dict

        # Given
        expected_query_dict = {'queryType': None, 'dataSource': {'type': 'union', 'dataSources': ['things','others','more']}}
        builder = QueryBuilder()
        # when
        builder_dict = {'datasource': ['things', 'others','more']}
        query = builder.build_query(None, builder_dict)
        # then
        assert query.query_dict == expected_query_dict

        # Given check that it rejects non-string items
        builder = QueryBuilder()
        builder_dict = {'datasource': ['things',123]}
        with pytest.raises(ValueError):
            query = builder.build_query(None, builder_dict)
コード例 #7
0
ファイル: test_query.py プロジェクト: druid-io/pydruid
    def test_build_query_none_type(self):
        # given
        expected_query_dict = {
            'queryType': None,
            'dataSource': 'things',
            'aggregations': [{'fieldName': 'thing', 'name': 'count', 'type': 'count'}],
            'filter': {'dimension': 'one', 'type': 'selector', 'value': 1},
            'having': {'aggregation': 'sum', 'type': 'greaterThan', 'value': 1},
            'dimension': 'dim1',
        }

        builder = QueryBuilder()

        # when
        builder_dict = {
            'datasource': 'things',
            'aggregations': {
                'count': aggregators.count('thing'),
            },
            'filter': filters.Dimension('one') == 1,
            'having': having.Aggregation('sum') > 1,
            'dimension': 'dim1',
        }
        query = builder.build_query(None, builder_dict)

        # then
        assert query.query_dict == expected_query_dict

        # you should be able to pass `None` to dimension/having/filter
        for v in ['dimension', 'having', 'filter']:
            expected_query_dict[v] = None
            builder_dict[v] = None

            query = builder.build_query(None, builder_dict)

            assert query.query_dict == expected_query_dict
コード例 #8
0
ファイル: test_query.py プロジェクト: druid-io/pydruid
    def test_build_query(self):
        # given
        expected_query_dict = {
            'queryType': None,
            'dataSource': 'things',
            'aggregations': [{'fieldName': 'thing', 'name': 'count', 'type': 'count'}],
            'postAggregations': [{
                'fields': [{
                    'fieldName': 'sum', 'type': 'fieldAccess',
                }, {
                    'fieldName': 'count', 'type': 'fieldAccess',
                }],
                'fn': '/',
                'name': 'avg',
                'type': 'arithmetic',
            }],
            'pagingSpec': {'pagingIdentifies': {}, 'threshold': 1},
            'filter': {'dimension': 'one', 'type': 'selector', 'value': 1},
            'having': {'aggregation': 'sum', 'type': 'greaterThan', 'value': 1},
            'new_key': 'value',
        }

        builder = QueryBuilder()

        # when
        query = builder.build_query(None, {
            'datasource': 'things',
            'aggregations': {
                'count': aggregators.count('thing'),
            },
            'post_aggregations': {
                'avg': (postaggregator.Field('sum') /
                        postaggregator.Field('count')),
            },
            'paging_spec': {
                'pagingIdentifies': {},
                'threshold': 1,
            },
            'filter': filters.Dimension('one') == 1,
            'having': having.Aggregation('sum') > 1,
            'new_key': 'value',
        })

        # then
        assert query.query_dict == expected_query_dict
コード例 #9
0
ファイル: test_query.py プロジェクト: vikramarsid/pydruid
    def test_build_query(self):
        # given
        expected_query_dict = {
            "queryType": None,
            "dataSource": "things",
            "aggregations": [{"fieldName": "thing", "name": "count", "type": "count"}],
            "postAggregations": [
                {
                    "fields": [
                        {"fieldName": "sum", "type": "fieldAccess"},
                        {"fieldName": "count", "type": "fieldAccess"},
                    ],
                    "fn": "/",
                    "name": "avg",
                    "type": "arithmetic",
                }
            ],
            "pagingSpec": {"pagingIdentifies": {}, "threshold": 1},
            "filter": {"dimension": "one", "type": "selector", "value": 1},
            "having": {"aggregation": "sum", "type": "greaterThan", "value": 1},
            "new_key": "value",
        }

        builder = QueryBuilder()

        # when
        query = builder.build_query(
            None,
            {
                "datasource": "things",
                "aggregations": {"count": aggregators.count("thing")},
                "post_aggregations": {
                    "avg": (postaggregator.Field("sum") / postaggregator.Field("count"))
                },
                "paging_spec": {"pagingIdentifies": {}, "threshold": 1},
                "filter": filters.Dimension("one") == 1,
                "having": having.Aggregation("sum") > 1,
                "new_key": "value",
            },
        )

        # then
        assert query.query_dict == expected_query_dict