def test_get_filters_converts_strings_to_num(self):
     filtr = {'col': 'A', 'op': 'in', 'val': ['6']}
     res = DruidDatasource.get_filters([filtr], ['A'])
     self.assertEqual(6, res.filter['filter']['value'])
     filtr = {'col': 'A', 'op': '==', 'val': '6'}
     res = DruidDatasource.get_filters([filtr], ['A'])
     self.assertEqual(6, res.filter['filter']['value'])
 def test_get_filters_handles_arrays_for_string_types(self):
     filtr = {'col': 'A', 'op': '==', 'val': ['a', 'b']}
     res = DruidDatasource.get_filters([filtr], [])
     self.assertEqual('a', res.filter['filter']['value'])
     filtr = {'col': 'A', 'op': '==', 'val': []}
     res = DruidDatasource.get_filters([filtr], [])
     self.assertEqual('', res.filter['filter']['value'])
예제 #3
0
 def test_get_filters_converts_strings_to_num(self):
     filtr = {'col': 'A', 'op': 'in', 'val': ['6']}
     col = DruidColumn(column_name='A')
     column_dict = {'A': col}
     res = DruidDatasource.get_filters([filtr], ['A'], column_dict)
     self.assertEqual(6, res.filter['filter']['value'])
     filtr = {'col': 'A', 'op': '==', 'val': '6'}
     res = DruidDatasource.get_filters([filtr], ['A'], column_dict)
     self.assertEqual(6, res.filter['filter']['value'])
예제 #4
0
    def test_get_filters_handles_arrays_for_string_types(self):
        filtr = {'col': 'A', 'op': '==', 'val': ['a', 'b']}
        col = DruidColumn(column_name='A')
        column_dict = {'A': col}
        res = DruidDatasource.get_filters([filtr], [], column_dict)
        self.assertEqual('a', res.filter['filter']['value'])

        filtr = {'col': 'A', 'op': '==', 'val': []}
        res = DruidDatasource.get_filters([filtr], [], column_dict)
        self.assertIsNone(res.filter['filter']['value'])
 def test_get_filters_constructs_filter_in(self):
     filtr = {'col': 'A', 'op': 'in', 'val': ['a', 'b', 'c']}
     res = DruidDatasource.get_filters([filtr], [])
     self.assertIn('filter', res.filter)
     self.assertIn('fields', res.filter['filter'])
     self.assertEqual('or', res.filter['filter']['type'])
     self.assertEqual(3, len(res.filter['filter']['fields']))
예제 #6
0
 def test_get_filters_ignores_in_not_in_with_empty_value(self):
     filtr1 = {'col': 'A', 'op': 'in', 'val': []}
     filtr2 = {'col': 'A', 'op': 'not in', 'val': []}
     col = DruidColumn(column_name='A')
     column_dict = {'A': col}
     res = DruidDatasource.get_filters([filtr1, filtr2], [], column_dict)
     self.assertIsNone(res)
예제 #7
0
 def test_get_filters_constructs_equals_for_in_not_in_single_value(self):
     filtr = {'col': 'A', 'op': 'in', 'val': ['a']}
     cola = DruidColumn(column_name='A')
     colb = DruidColumn(column_name='B')
     column_dict = {'A': cola, 'B': colb}
     res = DruidDatasource.get_filters([filtr], [], column_dict)
     self.assertEqual('selector', res.filter['filter']['type'])
 def test_get_filters_constructs_filter_not_equals(self):
     filtr = {'col': 'A', 'op': '!=', 'val': 'h'}
     res = DruidDatasource.get_filters([filtr], [])
     self.assertEqual('not', res.filter['filter']['type'])
     self.assertEqual(
         'h',
         res.filter['filter']['field'].filter['filter']['value'],
     )
예제 #9
0
 def test_get_filters_constructs_regex_filter(self):
     filtr = {'col': 'A', 'op': 'regex', 'val': '[abc]'}
     col = DruidColumn(column_name='A')
     column_dict = {'A': col}
     res = DruidDatasource.get_filters([filtr], [], column_dict)
     self.assertEqual('regex', res.filter['filter']['type'])
     self.assertEqual('[abc]', res.filter['filter']['pattern'])
     self.assertEqual('A', res.filter['filter']['dimension'])
예제 #10
0
 def test_get_filters_constructs_filter_equals(self):
     filtr = {'col': 'A', 'op': '==', 'val': 'h'}
     col = DruidColumn(column_name='A')
     column_dict = {'A': col}
     res = DruidDatasource.get_filters([filtr], [], column_dict)
     self.assertEqual('selector', res.filter['filter']['type'])
     self.assertEqual('A', res.filter['filter']['dimension'])
     self.assertEqual('h', res.filter['filter']['value'])
 def test_get_filters_constructs_bounds_filter(self):
     filtr = {'col': 'A', 'op': '>=', 'val': 'h'}
     res = DruidDatasource.get_filters([filtr], [])
     self.assertFalse(res.filter['filter']['lowerStrict'])
     self.assertEqual('A', res.filter['filter']['dimension'])
     self.assertEqual('h', res.filter['filter']['lower'])
     self.assertFalse(res.filter['filter']['alphaNumeric'])
     filtr['op'] = '>'
     res = DruidDatasource.get_filters([filtr], [])
     self.assertTrue(res.filter['filter']['lowerStrict'])
     filtr['op'] = '<='
     res = DruidDatasource.get_filters([filtr], [])
     self.assertFalse(res.filter['filter']['upperStrict'])
     self.assertEqual('h', res.filter['filter']['upper'])
     filtr['op'] = '<'
     res = DruidDatasource.get_filters([filtr], [])
     self.assertTrue(res.filter['filter']['upperStrict'])
예제 #12
0
 def test_get_filters_composes_multiple_filters(self):
     filtr1 = {'col': 'A', 'op': '!=', 'val': 'y'}
     filtr2 = {'col': 'B', 'op': 'in', 'val': ['a', 'b', 'c']}
     cola = DruidColumn(column_name='A')
     colb = DruidColumn(column_name='B')
     column_dict = {'A': cola, 'B': colb}
     res = DruidDatasource.get_filters([filtr1, filtr2], [], column_dict)
     self.assertEqual('and', res.filter['filter']['type'])
     self.assertEqual(2, len(res.filter['filter']['fields']))
예제 #13
0
 def test_get_filters_constructs_filter_not_equals(self):
     filtr = {'col': 'A', 'op': '!=', 'val': 'h'}
     col = DruidColumn(column_name='A')
     column_dict = {'A': col}
     res = DruidDatasource.get_filters([filtr], [], column_dict)
     self.assertEqual('not', res.filter['filter']['type'])
     self.assertEqual(
         'h',
         res.filter['filter']['field'].filter['filter']['value'],
     )
예제 #14
0
 def test_get_filters_is_not_null_filter(self):
     filtr = {"col": "A", "op": "IS NOT NULL"}
     col = DruidColumn(column_name="A")
     column_dict = {"A": col}
     res = DruidDatasource.get_filters([filtr], [], column_dict)
     self.assertEqual("not", res.filter["filter"]["type"])
     self.assertIn("field", res.filter["filter"])
     self.assertEqual(
         "selector", res.filter["filter"]["field"].filter["filter"]["type"])
     self.assertEqual(
         "", res.filter["filter"]["field"].filter["filter"]["value"])
예제 #15
0
 def test_get_filters_constructs_filter_not_in(self):
     filtr = {'col': 'A', 'op': 'not in', 'val': ['a', 'b', 'c']}
     res = DruidDatasource.get_filters([filtr], [])
     self.assertIn('filter', res.filter)
     self.assertIn('type', res.filter['filter'])
     self.assertEqual('not', res.filter['filter']['type'])
     self.assertIn('field', res.filter['filter'])
     self.assertEqual(
         3,
         len(res.filter['filter']['field'].filter['filter']['fields']),
     )
예제 #16
0
 def test_get_filters_constructs_filter_not_in(self):
     filtr = {"col": "A", "op": "not in", "val": ["a", "b", "c"]}
     col = DruidColumn(column_name="A")
     column_dict = {"A": col}
     res = DruidDatasource.get_filters([filtr], [], column_dict)
     self.assertIn("filter", res.filter)
     self.assertIn("type", res.filter["filter"])
     self.assertEqual("not", res.filter["filter"]["type"])
     self.assertIn("field", res.filter["filter"])
     self.assertEqual(
         3, len(res.filter["filter"]["field"].filter["filter"]["fields"]))
예제 #17
0
 def test_get_filters_constructs_filter_not_in(self):
     filtr = {'col': 'A', 'op': 'not in', 'val': ['a', 'b', 'c']}
     col = DruidColumn(column_name='A')
     column_dict = {'A': col}
     res = DruidDatasource.get_filters([filtr], [], column_dict)
     self.assertIn('filter', res.filter)
     self.assertIn('type', res.filter['filter'])
     self.assertEqual('not', res.filter['filter']['type'])
     self.assertIn('field', res.filter['filter'])
     self.assertEqual(
         3,
         len(res.filter['filter']['field'].filter['filter']['fields']),
     )
 def test_get_filters_constructs_bounds_filter(self):
     filtr = {"col": "A", "op": ">=", "val": "h"}
     col = DruidColumn(column_name="A")
     column_dict = {"A": col}
     res = DruidDatasource.get_filters([filtr], [], column_dict)
     self.assertFalse(res.filter["filter"]["lowerStrict"])
     self.assertEqual("A", res.filter["filter"]["dimension"])
     self.assertEqual("h", res.filter["filter"]["lower"])
     self.assertEqual("lexicographic", res.filter["filter"]["ordering"])
     filtr["op"] = ">"
     res = DruidDatasource.get_filters([filtr], [], column_dict)
     self.assertTrue(res.filter["filter"]["lowerStrict"])
     filtr["op"] = "<="
     res = DruidDatasource.get_filters([filtr], [], column_dict)
     self.assertFalse(res.filter["filter"]["upperStrict"])
     self.assertEqual("h", res.filter["filter"]["upper"])
     filtr["op"] = "<"
     res = DruidDatasource.get_filters([filtr], [], column_dict)
     self.assertTrue(res.filter["filter"]["upperStrict"])
     filtr["val"] = 1
     res = DruidDatasource.get_filters([filtr], ["A"], column_dict)
     self.assertEqual("numeric", res.filter["filter"]["ordering"])
예제 #19
0
 def test_get_filters_extraction_fn_registered_lookup_extraction(self):
     filters = [{"col": "country", "val": ["Spain"], "op": "in"}]
     dimension_spec = {
         "type": "extraction",
         "dimension": "country_name",
         "outputName": "country",
         "outputType": "STRING",
         "extractionFn": {"type": "registeredLookup", "lookup": "country_name"},
     }
     spec_json = json.dumps(dimension_spec)
     col = DruidColumn(column_name="country", dimension_spec_json=spec_json)
     column_dict = {"country": col}
     f = DruidDatasource.get_filters(filters, [], column_dict)
     assert isinstance(f.extraction_function, RegisteredLookupExtraction)
     dim_ext_fn = dimension_spec["extractionFn"]
     self.assertEqual(dim_ext_fn["type"], f.extraction_function.extraction_type)
     self.assertEqual(dim_ext_fn["lookup"], f.extraction_function._lookup)
예제 #20
0
 def test_get_filters_extraction_fn_regex(self):
     filters = [{"col": "buildPrefix", "val": ["22B"], "op": "in"}]
     dimension_spec = {
         "type": "extraction",
         "dimension": "build",
         "outputName": "buildPrefix",
         "outputType": "STRING",
         "extractionFn": {"type": "regex", "expr": "(^[0-9A-Za-z]{3})"},
     }
     spec_json = json.dumps(dimension_spec)
     col = DruidColumn(column_name="buildPrefix", dimension_spec_json=spec_json)
     column_dict = {"buildPrefix": col}
     f = DruidDatasource.get_filters(filters, [], column_dict)
     assert isinstance(f.extraction_function, RegexExtraction)
     dim_ext_fn = dimension_spec["extractionFn"]
     f_ext_fn = f.extraction_function
     self.assertEqual(dim_ext_fn["expr"], f_ext_fn._expr)
예제 #21
0
 def test_get_filters_extraction_fn_map(self):
     filters = [{'col': 'deviceName', 'val': ['iPhone X'], 'op': 'in'}]
     dimension_spec = {
         'type': 'extraction',
         'dimension': 'device',
         'outputName': 'deviceName',
         'outputType': 'STRING',
         'extractionFn': {
             'type': 'lookup',
             'dimension': 'dimensionName',
             'outputName': 'dimensionOutputName',
             'replaceMissingValueWith': 'missing_value',
             'retainMissingValue': False,
             'lookup': {
                 'type': 'map',
                 'map': {
                     'iPhone10,1': 'iPhone 8',
                     'iPhone10,4': 'iPhone 8',
                     'iPhone10,2': 'iPhone 8 Plus',
                     'iPhone10,5': 'iPhone 8 Plus',
                     'iPhone10,3': 'iPhone X',
                     'iPhone10,6': 'iPhone X',
                 },
                 'isOneToOne': False,
             },
         },
     }
     spec_json = json.dumps(dimension_spec)
     col = DruidColumn(column_name='deviceName',
                       dimension_spec_json=spec_json)
     column_dict = {'deviceName': col}
     f = DruidDatasource.get_filters(filters, [], column_dict)
     assert isinstance(f.extraction_function, MapLookupExtraction)
     dim_ext_fn = dimension_spec['extractionFn']
     f_ext_fn = f.extraction_function
     self.assertEqual(dim_ext_fn['lookup']['map'], f_ext_fn._mapping)
     self.assertEqual(dim_ext_fn['lookup']['isOneToOne'],
                      f_ext_fn._injective)
     self.assertEqual(
         dim_ext_fn['replaceMissingValueWith'],
         f_ext_fn._replace_missing_values,
     )
     self.assertEqual(
         dim_ext_fn['retainMissingValue'],
         f_ext_fn._retain_missing_values,
     )
예제 #22
0
 def test_get_filters_extraction_fn_map(self):
     filters = [{'col': 'deviceName', 'val': ['iPhone X'], 'op': 'in'}]
     dimension_spec = {
         'type': 'extraction',
         'dimension': 'device',
         'outputName': 'deviceName',
         'outputType': 'STRING',
         'extractionFn': {
             'type': 'lookup',
             'dimension': 'dimensionName',
             'outputName': 'dimensionOutputName',
             'replaceMissingValueWith': 'missing_value',
             'retainMissingValue': False,
             'lookup': {
                 'type': 'map',
                 'map': {
                     'iPhone10,1': 'iPhone 8',
                     'iPhone10,4': 'iPhone 8',
                     'iPhone10,2': 'iPhone 8 Plus',
                     'iPhone10,5': 'iPhone 8 Plus',
                     'iPhone10,3': 'iPhone X',
                     'iPhone10,6': 'iPhone X',
                 },
                 'isOneToOne': False,
             },
         },
     }
     spec_json = json.dumps(dimension_spec)
     col = DruidColumn(column_name='deviceName', dimension_spec_json=spec_json)
     column_dict = {'deviceName': col}
     f = DruidDatasource.get_filters(filters, [], column_dict)
     assert isinstance(f.extraction_function, MapLookupExtraction)
     dim_ext_fn = dimension_spec['extractionFn']
     f_ext_fn = f.extraction_function
     self.assertEqual(dim_ext_fn['lookup']['map'], f_ext_fn._mapping)
     self.assertEqual(dim_ext_fn['lookup']['isOneToOne'], f_ext_fn._injective)
     self.assertEqual(
         dim_ext_fn['replaceMissingValueWith'],
         f_ext_fn._replace_missing_values,
     )
     self.assertEqual(
         dim_ext_fn['retainMissingValue'],
         f_ext_fn._retain_missing_values,
     )
 def test_get_filters_extraction_fn_map(self):
     filters = [{"col": "deviceName", "val": ["iPhone X"], "op": "in"}]
     dimension_spec = {
         "type": "extraction",
         "dimension": "device",
         "outputName": "deviceName",
         "outputType": "STRING",
         "extractionFn": {
             "type": "lookup",
             "dimension": "dimensionName",
             "outputName": "dimensionOutputName",
             "replaceMissingValueWith": "missing_value",
             "retainMissingValue": False,
             "lookup": {
                 "type": "map",
                 "map": {
                     "iPhone10,1": "iPhone 8",
                     "iPhone10,4": "iPhone 8",
                     "iPhone10,2": "iPhone 8 Plus",
                     "iPhone10,5": "iPhone 8 Plus",
                     "iPhone10,3": "iPhone X",
                     "iPhone10,6": "iPhone X",
                 },
                 "isOneToOne": False,
             },
         },
     }
     spec_json = json.dumps(dimension_spec)
     col = DruidColumn(column_name="deviceName",
                       dimension_spec_json=spec_json)
     column_dict = {"deviceName": col}
     f = DruidDatasource.get_filters(filters, [], column_dict)
     assert isinstance(f.extraction_function, MapLookupExtraction)
     dim_ext_fn = dimension_spec["extractionFn"]
     f_ext_fn = f.extraction_function
     self.assertEqual(dim_ext_fn["lookup"]["map"], f_ext_fn._mapping)
     self.assertEqual(dim_ext_fn["lookup"]["isOneToOne"],
                      f_ext_fn._injective)
     self.assertEqual(dim_ext_fn["replaceMissingValueWith"],
                      f_ext_fn._replace_missing_values)
     self.assertEqual(dim_ext_fn["retainMissingValue"],
                      f_ext_fn._retain_missing_values)
예제 #24
0
 def test_get_filters_extraction_fn_regex(self):
     filters = [{'col': 'buildPrefix', 'val': ['22B'], 'op': 'in'}]
     dimension_spec = {
         'type': 'extraction',
         'dimension': 'build',
         'outputName': 'buildPrefix',
         'outputType': 'STRING',
         'extractionFn': {
             'type': 'regex',
             'expr': '(^[0-9A-Za-z]{3})',
         },
     }
     spec_json = json.dumps(dimension_spec)
     col = DruidColumn(column_name='buildPrefix', dimension_spec_json=spec_json)
     column_dict = {'buildPrefix': col}
     f = DruidDatasource.get_filters(filters, [], column_dict)
     assert isinstance(f.extraction_function, RegexExtraction)
     dim_ext_fn = dimension_spec['extractionFn']
     f_ext_fn = f.extraction_function
     self.assertEqual(dim_ext_fn['expr'], f_ext_fn._expr)
예제 #25
0
 def test_get_filters_extraction_fn_regex(self):
     filters = [{'col': 'buildPrefix', 'val': ['22B'], 'op': 'in'}]
     dimension_spec = {
         'type': 'extraction',
         'dimension': 'build',
         'outputName': 'buildPrefix',
         'outputType': 'STRING',
         'extractionFn': {
             'type': 'regex',
             'expr': '(^[0-9A-Za-z]{3})',
         },
     }
     spec_json = json.dumps(dimension_spec)
     col = DruidColumn(column_name='buildPrefix',
                       dimension_spec_json=spec_json)
     column_dict = {'buildPrefix': col}
     f = DruidDatasource.get_filters(filters, [], column_dict)
     assert isinstance(f.extraction_function, RegexExtraction)
     dim_ext_fn = dimension_spec['extractionFn']
     f_ext_fn = f.extraction_function
     self.assertEqual(dim_ext_fn['expr'], f_ext_fn._expr)
예제 #26
0
 def test_get_filters_extraction_fn_time_format(self):
     filters = [{"col": "dayOfMonth", "val": ["1", "20"], "op": "in"}]
     dimension_spec = {
         "type": "extraction",
         "dimension": "__time",
         "outputName": "dayOfMonth",
         "extractionFn": {
             "type": "timeFormat",
             "format": "d",
             "timeZone": "Asia/Kolkata",
             "locale": "en",
         },
     }
     spec_json = json.dumps(dimension_spec)
     col = DruidColumn(column_name="dayOfMonth", dimension_spec_json=spec_json)
     column_dict = {"dayOfMonth": col}
     f = DruidDatasource.get_filters(filters, [], column_dict)
     assert isinstance(f.extraction_function, TimeFormatExtraction)
     dim_ext_fn = dimension_spec["extractionFn"]
     self.assertEqual(dim_ext_fn["type"], f.extraction_function.extraction_type)
     self.assertEqual(dim_ext_fn["format"], f.extraction_function._format)
     self.assertEqual(dim_ext_fn["timeZone"], f.extraction_function._time_zone)
     self.assertEqual(dim_ext_fn["locale"], f.extraction_function._locale)
예제 #27
0
 def test_get_filters_constructs_filter_equals(self):
     filtr = {'col': 'A', 'op': '==', 'val': 'h'}
     res = DruidDatasource.get_filters([filtr], [])
     self.assertEqual('selector', res.filter['filter']['type'])
     self.assertEqual('A', res.filter['filter']['dimension'])
     self.assertEqual('h', res.filter['filter']['value'])
예제 #28
0
 def test_get_filters_ignores_invalid_filter_objects(self):
     filtr = {'col': 'col1', 'op': '=='}
     filters = [filtr]
     self.assertEqual(None, DruidDatasource.get_filters(filters, []))
 def test_get_filters_constructs_equals_for_in_not_in_single_value(self):
     filtr = {'col': 'A', 'op': 'in', 'val': ['a']}
     res = DruidDatasource.get_filters([filtr], [])
     self.assertEqual('selector', res.filter['filter']['type'])
 def test_get_filters_keeps_trailing_spaces(self):
     filtr = {"col": "A", "op": "in", "val": ["a "]}
     col = DruidColumn(column_name="A")
     column_dict = {"A": col}
     res = DruidDatasource.get_filters([filtr], [], column_dict)
     self.assertEqual("a ", res.filter["filter"]["value"])
 def test_get_filters_handles_none_for_string_types(self):
     filtr = {"col": "A", "op": "==", "val": None}
     col = DruidColumn(column_name="A")
     column_dict = {"A": col}
     res = DruidDatasource.get_filters([filtr], [], column_dict)
     self.assertIsNone(res)
예제 #32
0
 def test_get_filters_ignores_invalid_filter_objects(self):
     filtr = {'col': 'col1', 'op': '=='}
     filters = [filtr]
     col = DruidColumn(column_name='col1')
     column_dict = {'col1': col}
     self.assertIsNone(DruidDatasource.get_filters(filters, [], column_dict))
예제 #33
0
 def test_get_filters_handles_none_for_string_types(self):
     filtr = {'col': 'A', 'op': '==', 'val': None}
     col = DruidColumn(column_name='A')
     column_dict = {'A': col}
     res = DruidDatasource.get_filters([filtr], [], column_dict)
     self.assertIsNone(res)
예제 #34
0
 def test_get_filters_ignores_in_not_in_with_empty_value(self):
     filtr1 = {'col': 'A', 'op': 'in', 'val': []}
     filtr2 = {'col': 'A', 'op': 'not in', 'val': []}
     res = DruidDatasource.get_filters([filtr1, filtr2], [])
     self.assertEqual(None, res)
예제 #35
0
 def test_get_filters_constructs_regex_filter(self):
     filtr = {'col': 'A', 'op': 'regex', 'val': '[abc]'}
     res = DruidDatasource.get_filters([filtr], [])
     self.assertEqual('regex', res.filter['filter']['type'])
     self.assertEqual('[abc]', res.filter['filter']['pattern'])
     self.assertEqual('A', res.filter['filter']['dimension'])
 def test_get_filters_constructs_filter_equals(self):
     filtr = {'col': 'A', 'op': '==', 'val': 'h'}
     res = DruidDatasource.get_filters([filtr], [])
     self.assertEqual('selector', res.filter['filter']['type'])
     self.assertEqual('A', res.filter['filter']['dimension'])
     self.assertEqual('h', res.filter['filter']['value'])
 def test_get_filters_constructs_filter_not_equals(self):
     filtr = {'col': 'A', 'op': '!=', 'val': 'h'}
     res = DruidDatasource.get_filters([filtr], [])
     self.assertEqual('not', res.filter['filter']['type'])
     self.assertEqual(
         'h', res.filter['filter']['field'].filter['filter']['value'])
 def test_get_filters_ignores_invalid_filter_objects(self):
     filtr = {'col': 'col1', 'op': '=='}
     filters = [filtr]
     self.assertEqual(None, DruidDatasource.get_filters(filters, []))
예제 #39
0
 def test_get_filters_handles_none_for_string_types(self):
     filtr = {'col': 'A', 'op': '==', 'val': None}
     res = DruidDatasource.get_filters([filtr], [])
     self.assertIsNone(res)
예제 #40
0
 def test_get_filters_ignores_invalid_filter_objects(self):
     filtr = {"col": "col1", "op": "=="}
     filters = [filtr]
     col = DruidColumn(column_name="col1")
     column_dict = {"col1": col}
     self.assertIsNone(DruidDatasource.get_filters(filters, [], column_dict))
예제 #41
0
 def test_get_filters_composes_multiple_filters(self):
     filtr1 = {'col': 'A', 'op': '!=', 'val': 'y'}
     filtr2 = {'col': 'B', 'op': 'in', 'val': ['a', 'b', 'c']}
     res = DruidDatasource.get_filters([filtr1, filtr2], [])
     self.assertEqual('and', res.filter['filter']['type'])
     self.assertEqual(2, len(res.filter['filter']['fields']))
예제 #42
0
 def test_get_filters_extracts_values_in_quotes(self):
     filtr = {'col': 'A', 'op': 'in', 'val': ['  "a" ']}
     col = DruidColumn(column_name='A')
     column_dict = {'A': col}
     res = DruidDatasource.get_filters([filtr], [], column_dict)
     self.assertEqual('a', res.filter['filter']['value'])
예제 #43
0
 def test_get_filters_handles_none_for_string_types(self):
     filtr = {'col': 'A', 'op': '==', 'val': None}
     col = DruidColumn(column_name='A')
     column_dict = {'A': col}
     res = DruidDatasource.get_filters([filtr], [], column_dict)
     self.assertIsNone(res)
 def test_get_filters_constructs_regex_filter(self):
     filtr = {'col': 'A', 'op': 'regex', 'val': '[abc]'}
     res = DruidDatasource.get_filters([filtr], [])
     self.assertEqual('regex', res.filter['filter']['type'])
     self.assertEqual('[abc]', res.filter['filter']['pattern'])
     self.assertEqual('A', res.filter['filter']['dimension'])
예제 #45
0
 def test_get_filters_extracts_values_in_quotes(self):
     filtr = {'col': 'A', 'op': 'in', 'val': ['  "a" ']}
     col = DruidColumn(column_name='A')
     column_dict = {'A': col}
     res = DruidDatasource.get_filters([filtr], [], column_dict)
     self.assertEqual('a', res.filter['filter']['value'])
 def test_get_filters_composes_multiple_filters(self):
     filtr1 = {'col': 'A', 'op': '!=', 'val': 'y'}
     filtr2 = {'col': 'B', 'op': 'in', 'val': ['a', 'b', 'c']}
     res = DruidDatasource.get_filters([filtr1, filtr2], [])
     self.assertEqual('and', res.filter['filter']['type'])
     self.assertEqual(2, len(res.filter['filter']['fields']))
예제 #47
0
 def test_get_filters_constructs_equals_for_in_not_in_single_value(self):
     filtr = {'col': 'A', 'op': 'in', 'val': ['a']}
     res = DruidDatasource.get_filters([filtr], [])
     self.assertEqual('selector', res.filter['filter']['type'])
예제 #48
0
 def test_get_filters_handles_none_for_string_types(self):
     filtr = {'col': 'A', 'op': '==', 'val': None}
     res = DruidDatasource.get_filters([filtr], [])
     self.assertEqual('', res.filter['filter']['value'])
 def test_get_filters_extracts_values_in_quotes(self):
     filtr = {"col": "A", "op": "in", "val": ['"a"']}
     col = DruidColumn(column_name="A")
     column_dict = {"A": col}
     res = DruidDatasource.get_filters([filtr], [], column_dict)
     self.assertEqual("a", res.filter["filter"]["value"])
예제 #50
0
 def test_get_filters_extracts_values_in_quotes(self):
     filtr = {'col': 'A', 'op': 'in', 'val': ['  "a" ']}
     res = DruidDatasource.get_filters([filtr], [])
     self.assertEqual('a', res.filter['filter']['value'])
 def test_get_filters_extracts_values_in_quotes(self):
     filtr = {'col': 'A', 'op': 'in', 'val': ['  "a" ']}
     res = DruidDatasource.get_filters([filtr], [])
     self.assertEqual('a', res.filter['filter']['value'])
 def test_get_filters_ignores_in_not_in_with_empty_value(self):
     filtr1 = {'col': 'A', 'op': 'in', 'val': []}
     filtr2 = {'col': 'A', 'op': 'not in', 'val': []}
     res = DruidDatasource.get_filters([filtr1, filtr2], [])
     self.assertEqual(None, res)