2017-09-25 48 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匹配查找基礎表。 –

相關問題