使用通配符查询时,Bigquery 无法 return 来自 table 的正确数据
Bigquery fails to return proper data from table when queried using wildcard query
我们正在使用 Looker(dashboard/reporting 解决方案)在 BigQuery 中创建持久派生的 table。就 bigquery 而言,这些是正常的 tables,但命名是按照 looker 标准(它根据 DB + SQL 等创建哈希)并相应地命名 table .这些 table 是每天在预定时间通过视图生成的。 BigQuery 中的 table 名称如下所示。
table_id
LR_Z504ZN0UK2AQH8N2DOJDC_AGG__table1
LR_Z5321I8L284XXY1KII4TH_MART__table2
LR_Z53WLHYCZO32VK3FWRS2D_JND__table3
如果我通过显式名称在 BQ 中查询结果 table,则结果会按预期返回。
select * from `looker_scratch.LR_Z53WLHYCZO32VK3FWRS2D_JND__table3`
query/job 更改后重新生成 table 时,Looker 会更改 table 名称中的哈希值。因此,我想创建一个带有通配符 table 查询的视图,以使 table 名称中的更改对外界透明。
但是下面的查询总是失败。
SELECT *
FROM \`looker_scratch.LR_*\`
where _table_suffix like '%JND__table3'
我要么得到一个带有空值的完全随机的模式,要么得到如下错误:
Error: Cannot read field 'reportDate' of type DATE as TIMESTAMP_MICROS
没有冲突的 table 后缀,我使用了各种正则表达式检查(lower、contains 等)
发生这种情况是因为 table 名称中包含哈希值吗?我对其他数据集进行了 运行 多次测试,绝对没有问题,我们已经 运行ning 通配符 table 查询很长时间了,没有遇到任何问题。
请告诉我您的想法。
当您像下面这样使用通配符时
`looker_scratch.LR_*`
你实际上是在寻找所有带有这个前缀的 tables 而不是 - 当你应用下面的子句
LIKE '%JND__table3'
你进一步过滤 table 后缀
所以这里的技巧是首先(按时间顺序)table 定义输出的架构
解决您的问题 - 验证是否有更多 table 与您的查询相匹配,而不是查看第一个(第一个创建的)
我们正在使用 Looker(dashboard/reporting 解决方案)在 BigQuery 中创建持久派生的 table。就 bigquery 而言,这些是正常的 tables,但命名是按照 looker 标准(它根据 DB + SQL 等创建哈希)并相应地命名 table .这些 table 是每天在预定时间通过视图生成的。 BigQuery 中的 table 名称如下所示。
table_id
LR_Z504ZN0UK2AQH8N2DOJDC_AGG__table1
LR_Z5321I8L284XXY1KII4TH_MART__table2
LR_Z53WLHYCZO32VK3FWRS2D_JND__table3
如果我通过显式名称在 BQ 中查询结果 table,则结果会按预期返回。
select * from `looker_scratch.LR_Z53WLHYCZO32VK3FWRS2D_JND__table3`
query/job 更改后重新生成 table 时,Looker 会更改 table 名称中的哈希值。因此,我想创建一个带有通配符 table 查询的视图,以使 table 名称中的更改对外界透明。
但是下面的查询总是失败。
SELECT *
FROM \`looker_scratch.LR_*\`
where _table_suffix like '%JND__table3'
我要么得到一个带有空值的完全随机的模式,要么得到如下错误:
Error: Cannot read field 'reportDate' of type DATE as TIMESTAMP_MICROS
没有冲突的 table 后缀,我使用了各种正则表达式检查(lower、contains 等)
发生这种情况是因为 table 名称中包含哈希值吗?我对其他数据集进行了 运行 多次测试,绝对没有问题,我们已经 运行ning 通配符 table 查询很长时间了,没有遇到任何问题。
请告诉我您的想法。
当您像下面这样使用通配符时
`looker_scratch.LR_*`
你实际上是在寻找所有带有这个前缀的 tables 而不是 - 当你应用下面的子句
LIKE '%JND__table3'
你进一步过滤 table 后缀
所以这里的技巧是首先(按时间顺序)table 定义输出的架构
解决您的问题 - 验证是否有更多 table 与您的查询相匹配,而不是查看第一个(第一个创建的)