0

我们正在使用 Looker(仪表板/报告解决方案)在 BigQuery 中创建持久派生表。就 bigquery 而言,这些是普通表,但命名是按照外观标准(它创建基于 DB + SQL 等的哈希)并相应地命名表。这些表格是通过每天在预定时间查看生成的。BigQuery 中的表名称如下所示。

table_id 

LR_Z504ZN0UK2AQH8N2DOJDC_AGG__table1         
LR_Z5321I8L284XXY1KII4TH_MART__table2

LR_Z53WLHYCZO32VK3FWRS2D_JND__table3     

如果我通过显式名称查询 BQ 中的结果表,则结果将按预期返回。

select * from `looker_scratch.LR_Z53WLHYCZO32VK3FWRS2D_JND__table3`

在查询/作业更改后重新生成表时,Looker 会更改表名中的哈希值。因此,我想创建一个带有通配符表查询的视图,以使表名的更改对外界透明。

但是下面的查询总是失败。

SELECT * 
FROM \`looker_scratch.LR_*\` 
where _table_suffix like '%JND__table3'

我要么得到一个带有空值或错误的完全随机模式,例如:

Error: Cannot read field 'reportDate' of type DATE as TIMESTAMP_MICROS

没有冲突的表后缀,我使用了各种正则表达式检查(lower、contains 等)

这是因为表名中包含哈希值而发生的吗?我已经对其他数据集进行了多次测试,绝对没有问题,我们一直在运行通配符表查询,并且没有遇到任何问题。

请让我知道你的想法。

4

1 回答 1

2

当您使用如下通配符时

`looker_scratch.LR_*`   

您实际上正在寻找具有此前缀的所有表,而不是 - 当您应用以下子句时

LIKE '%JND__table3'   

您在带有此类后缀的表格中进一步过滤

所以这里的技巧是第一个(按时间顺序)表定义了输出的模式

要解决您的问题 - 验证是否有更多表与您的查询匹配,而不是查看第一个表(首先创建的表)

于 2017-09-25T19:25:45.100 回答