我想基于BigTable中的数据生成一些报告。为此,我想创建一个查询,该查询将从BigTable中获取最新数据并将其传递到Data Studio报告中。现在的问题是,当我在BigQuery中创建BigTable连接时,即使在空表上也无法执行任何查询。 我可以通过以下方式为BigQuery创建类型:
bq mk \
--external_table_definition=gs://somebucket/big-table-definition.json \
datareportingdataset.datareportingtable
,命令成功执行。
我的big-table-definition.json
如下所示:
{
"sourceFormat": "BIGTABLE",
"sourceUris": [
"https://googleapis.com/bigtable/projects/playground-2/instances/data-reporting/tables/data-reporting-table"
],
"bigtableOptions": {
"readRowkeyAsString": "true",
"columnFamilies" : [
{
"familyId": "cf1",
"onlyReadLatest": "true",
"columns": [
{
"qualifierString": "temp",
"type": "STRING"
},
{
//the rest of the columns
]
}
]
}
}
进行简单的select *
查询时出现的错误如下:
Error while reading table: datareportingdataset.datareportingtable, error message: Error detected while parsing row starting at position: 2. Error: Data between close double quote (") and field separator.
首先,我怀疑BigTable中有一些数据,但是当我从那里删除所有内容时,仍然会发生错误。我发现它必须与json文件本身有关,因为当我将“ sourceFormats”向下移动几行时,报告的错误更改位置。 我在这里做什么错了?
答案 0 :(得分:1)
只是复制了您的案例并发现了完全相同的错误。在我看来,当您运行bq mk命令时,它根本不提取任何数据。
作为一种解决方法,我建议您运行Dataflow job以将数据作为.avro文件提取到Cloud Storage,然后将数据导入Bigquery中的数据集。
答案 1 :(得分:1)
我认为我能够重现此问题。错误消息令人困惑,但是,如here所述:
您必须手动创建JSON模式文件,并且该文件必须位于您的 本地机器。引用存储在Cloud Storage中的JSON模式文件 或不支持在Google云端硬盘中。
我用Bigtable quickstart做了一些测试,对我来说效果很好:
bq query "SELECT * FROM DATASET.datareportingtable"
Waiting on JOB_ID ... (3s) Current status: DONE
+--------+-----------------+---------------------------+-----------------------+
| rowkey | cf1_column_name | cf1_column_cell_timestamp | cf1_column_cell_value |
+--------+-----------------+---------------------------+-----------------------+
| r1 | c1 | 2019-10-15 18:15:04 | test-value |
+--------+-----------------+---------------------------+-----------------------+
我唯一不同的是使用本地路径,如下所示:
--external_table_definition=big-table-definition.json
将其更改回:
--external_table_definition=gs://$BUCKET/big-table-definition.json
我遇到了同样的错误:
bq query "SELECT * FROM DATASET.datareportingtable2"
Waiting on JOB_ID ... (0s) Current status: DONE
BigQuery error in query operation: Error processing job 'PROJECT:JOB_ID': Error while reading table: DATASET.datareportingtable2, error message: Error detected while parsing row starting at
position: 2. Error: Data between close double quote (") and field separator.