2017-09-25 46 views
0

我们使用Looker(仪表板/报表解决方案)在BigQuery中创建持久派生表。就bigquery而言,这些都是普通表,但命名是按照标准(它创建基于DB + SQL的散列),并相应地命名表。这些表格通过每天在计划时间内查看而生成。 BigQuery中的表名如下所示。当查询使用通配符查询时,Bigquery无法从表中返回适当的数据

table_id 

LR_Z504ZN0UK2AQH8N2DOJDC_AGG__table1   
LR_Z5321I8L284XXY1KII4TH_MART__table2 

LR_Z53WLHYCZO32VK3FWRS2D_JND__table3  

如果我通过显式名称在BQ中查询结果表,那么结果按预期返回。

select * from `looker_scratch.LR_Z53WLHYCZO32VK3FWRS2D_JND__table3` 

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

但下面的查询总是失败。

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

我要么得到一个完全随机的架构与空值或错误,如:

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

没有争食表后缀,我已经使用的所有类型的正则表达式检查(低,含有, etc)

这是因为表名中包含哈希值而发生这种情况吗?我已经在其他数据集上运行了多个测试,并且绝对没有问题,我们已经很长时间运行了通配符表查询,并且没有遇到任何问题。

请让我知道您的想法。

回答

2

如果您使用的是像下面

`looker_scratch.LR_*` 

你实际上是寻找与这个前缀,比所有表通配符 - 当你申请以下条款中有这样的后缀表

LIKE '%JND__table3' 

您提供进一步的过滤器

所以这里的诀窍是,第一个(按时间顺序排列)的表格定义了您的输出模式

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

+0

感谢Mikhail,现在我明白为什么查询失败了。 我认为它足够聪明,可以根据table_suffix匹配查找基础表。 –

相关问题