从 Dataflow 到 BigQuerySource 的简单查询抛出异常
Simple query from Dataflow to BigQuerySource throws exception
我正在尝试编写一个简单的数据流作业,该作业利用 BigQuerySource
class.
中的 query
参数
简单来说,我可以使用 BigQuerySource
class 访问 BigQuery table,然后对其进行过滤。我无法使用 BigQuerySource
.
直接针对 BigQuery table 进行查询/过滤
这是一些代码。在我的数据流管道中进行在线过滤,效果很好:
import argparse
import apache_beam as beam
parser = argparse.ArgumentParser()
parser.add_argument('--output', required=True)
known_args, pipeline_args = parser.parse_known_args(None)
p = beam.Pipeline(argv=pipeline_args)
source = 'bigquery-public-data:samples.shakespeare'
rows = p | 'read'>>beam.io.Read(beam.io.BigQuerySource(source))
f = rows | 'filter' >> beam.Map(lambda row: 1 if (row['word_count'] > 1) else 0)
f | 'write' >> beam.io.WriteToText(known_args.output)
p.run()
用单行查询替换中间的节会出错。
f = p | 'read' >> beam.io.Read(beam.io.BigQuerySource('SELECT 1 FROM ' \
+ 'bigquery-public-data:samples.shakespeare where word_count > 1'))
返回的错误看起来像是语法错误。
(a29eabc394a38f62): Workflow failed. Causes:
(a29eabc394a38cfa): S04:read+write/Write/WriteImpl/WriteBundles+write/Write/WriteImpl/Pair+write/Write/WriteImpl/WindowInto(WindowIntoFn)+write/Write/WriteImpl/GroupByKey/Reify+write/Write/WriteImpl/GroupByKey/Write failed.,
(fb6d0643d7f13886): BigQuery execution failed.,
(fb6d0643d7f13b03): Error: Message: Encountered " "-" "- "" at line 1, column 59. Was expecting: <EOF>
我是否需要转义 BigQuery 项目名称中的 -
个字符?
在 BigQuery Legacy SQL 中 - 您应该使用 [
和 ]
转义整个 table 引用
对于标准 SQL 你应该使用 back-ticks
出于同样的原因
我正在尝试编写一个简单的数据流作业,该作业利用 BigQuerySource
class.
query
参数
简单来说,我可以使用 BigQuerySource
class 访问 BigQuery table,然后对其进行过滤。我无法使用 BigQuerySource
.
这是一些代码。在我的数据流管道中进行在线过滤,效果很好:
import argparse
import apache_beam as beam
parser = argparse.ArgumentParser()
parser.add_argument('--output', required=True)
known_args, pipeline_args = parser.parse_known_args(None)
p = beam.Pipeline(argv=pipeline_args)
source = 'bigquery-public-data:samples.shakespeare'
rows = p | 'read'>>beam.io.Read(beam.io.BigQuerySource(source))
f = rows | 'filter' >> beam.Map(lambda row: 1 if (row['word_count'] > 1) else 0)
f | 'write' >> beam.io.WriteToText(known_args.output)
p.run()
用单行查询替换中间的节会出错。
f = p | 'read' >> beam.io.Read(beam.io.BigQuerySource('SELECT 1 FROM ' \
+ 'bigquery-public-data:samples.shakespeare where word_count > 1'))
返回的错误看起来像是语法错误。
(a29eabc394a38f62): Workflow failed. Causes:
(a29eabc394a38cfa): S04:read+write/Write/WriteImpl/WriteBundles+write/Write/WriteImpl/Pair+write/Write/WriteImpl/WindowInto(WindowIntoFn)+write/Write/WriteImpl/GroupByKey/Reify+write/Write/WriteImpl/GroupByKey/Write failed.,
(fb6d0643d7f13886): BigQuery execution failed.,
(fb6d0643d7f13b03): Error: Message: Encountered " "-" "- "" at line 1, column 59. Was expecting: <EOF>
我是否需要转义 BigQuery 项目名称中的 -
个字符?
在 BigQuery Legacy SQL 中 - 您应该使用 [
和 ]
转义整个 table 引用
对于标准 SQL 你应该使用 back-ticks
出于同样的原因