示例#1
0
    def test_group_by_error(self):
        '''Test that selecting a varying non-group-by-key raises an error'''

        sql_query = 'SELECT d FROM `my_project.my_dataset.table2` GROUP BY a'

        with self.assertRaisesRegexp(ValueError, "not aggregated or grouped by"):
            execute_query(sql_query, self.datasets)
示例#2
0
    def test_query_error(self):
        '''Issue a query with insufficient context, to trigger general Exception catch'''

        sql_query = 'SELECT * FROM SomeTable'
        expected_error = (r"Attempt to look up path \('SomeTable',\) "
                          r"with no projects/datasets/tables given")
        with self.assertRaisesRegexp(ValueError, expected_error):
            execute_query(sql_query, {})
示例#3
0
    def test_leftover_error(self):
        '''A nonsensical query, to trigger "Could not fully parse query"'''

        sql_query = 'a b c'
        expected_error = (
            "Could not fully parse query: leftover tokens \\['a', 'b', 'c'\\]\n"
            "simplified query 'a b c'\n"
            "raw query 'a b c'")
        with self.assertRaisesRegexp(RuntimeError, expected_error):
            execute_query(sql_query, self.datasets)
示例#4
0
 def test_join_conditions(self, condition, expected_result):
     self.datasets['my_project']['my_dataset']['lefty'] = TypedDataFrame(
         pd.DataFrame([[1., 10.], [2., 20.]], columns=['a', 'b']),
         types=[BQScalarType.FLOAT, BQScalarType.FLOAT])
     self.datasets['my_project']['my_dataset']['righty'] = TypedDataFrame(
         pd.DataFrame([[1., 100.], [3., 300.]], columns=['a', 'c']),
         types=[BQScalarType.FLOAT, BQScalarType.FLOAT])
     sql_query = (
         ('select lefty.a,righty.a,b,c from `my_project.my_dataset.lefty`'
          'full outer join `my_project.my_dataset.righty` {}'
          ).format(condition))
     result = execute_query(sql_query, self.datasets)
     self.assertEqual(result.to_list_of_lists(), expected_result)
示例#5
0
 def test_join_types(self, join_type, expected_result):
     # Missing join stuff to test.
     # alias with AS; alias without AS
     self.datasets['my_project']['my_dataset']['lefty'] = TypedDataFrame(
         pd.DataFrame([[1., 10.], [2., 20.]], columns=['a', 'b']),
         types=[BQScalarType.FLOAT, BQScalarType.FLOAT])
     self.datasets['my_project']['my_dataset']['righty'] = TypedDataFrame(
         pd.DataFrame([[1., 100.], [3., 300.]], columns=['a', 'c']),
         types=[BQScalarType.FLOAT, BQScalarType.FLOAT])
     sql_query = ((
         'select lefty.a, righty.a, b, c from `my_project.my_dataset.lefty`'
         '{} join `my_project.my_dataset.righty` on lefty.a=righty.a'
     ).format(join_type))
     result = execute_query(sql_query, self.datasets)
     self.assertEqual(result.to_list_of_lists(), expected_result)
示例#6
0
 def test_scalar_selects(self, sql_query, expected_result):
     result = execute_query(sql_query, self.datasets)
     self.assertEqual(result.to_list_of_lists(), expected_result)