日期分区表上的BigQuerySource

时间:2016-09-20 23:31:57

标签: google-bigquery google-cloud-platform google-cloud-dataflow

我有一组日期分区表employee_wages_<date>,想要使用数据流读取一些列。有些东西(python示例)

beam.io.Read('ReadNameAndTotalSalary',
  beam.io.BigQuerySource(query='SELECT user_name, sum(salary) as total_salary FROM  `project_id.dataset_id.employee_salary_*` group by 1'))

查询在Google大查询上工作正常,但是当我运行管道时,我得到并且错误地说无效表名。也许我正在做一些非常愚蠢的事情或者是不可能在df中使用glob(*)?

1 个答案:

答案 0 :(得分:1)

Dataflow(尚未)支持您在查询中使用的BigQuery Standard SQL。一种解决方法是使用#StandardSQL预先添加查询文本,这将指示BigQuery以下查询使用标准SQL,即

beam.io.Read('ReadNameAndTotalSalary',
  beam.io.BigQuerySource(query='#StandardSQL\nSELECT user_name, sum(salary) as total_salary FROM  `project_id.dataset_id.employee_salary_*` group by 1'))

(我认为\ n在Python中用作换行符,但我不是Python程序员)

更新:Dataflow SDK for Java 1.8.0(今天发布),使用StandardSql设置引入,但它不在python SDK中(尚未)。