這個S關於喬丹的回答這裏的後續問題:Weird error in BigQuery錯誤:TABLE_QUERY表達式無法查詢BigQuery表格
我使用查詢「Table_Query」中的參考表退出一段時間。現在,在Joradan最近指出的變化之後,我們的許多疑問都被打破了......我想問一下社區的建議,以尋找替代方案來解決我們正在做的事情。
我有包含事件的表(「MyTable_YYYYMMDD」)。我想查詢一段特定(或幾個)廣告系列的數據。該活動的時間段存儲在包含所有活動數據(ID,StartCampaignDate,EndCampaignDate)的表格中。爲了僅查詢相關表格,我們使用Table_Query(),並在TableQuery()中根據活動數據構建所有相關表格名稱的列表。 此查詢以多種形式以不同的參數運行多次。使用通配符功能(而不是查詢整個數據集)的原因是性能,執行成本和維護成本。因此,讓它查詢所有表並僅過濾結果不是一種選擇,因爲它會導致執行成本過高。
示例查詢將看起來像:
SELECT
*
FROM
TABLE_QUERY([MyProject:MyDataSet] 'table_id IN
(SELECT CONCAT("MyTable_",STRING(Year*100+Month)) TBL_NAME
FROM DWH.Dim_Periods P
CROSS JOIN DWH.Campaigns AS LC
WHERE ID IN ("86254e5a-b856-3b5a-85e1-0f5ab3ff20d6")
AND DATE(P.Date) BETWEEN DATE(StartCampaignDate) AND DATE(EndCampaignDate))')
現在這是打破...... 我的問題 - 的信息,它的表,你應該查詢存儲在參考表,你怎麼會只查詢當「TableQuery」不再被允許查詢參考表時,相關的表(分區)?
非常感謝
謝謝,的確,我們已經考慮過這個解決方案。但是,我更喜歡避免多個步驟的查詢......我擔心隨着時間的推移,維護變得複雜,因爲邏輯分散在多個地方,並且在此過程中還有更多可能的失敗點。 –
如果您正在尋找解決您所要求的解決方法 - 這是您擁有的解決方案,而且您不會得到我可以告訴您的一步解決方案。如果您試圖提出要求或要求Google小組 - 您最好使用https://code.google.com/p/google-bigquery/:o)所以我們不會浪費時間回答,即使我喜歡回答並沒有任何問題 - 這是更多的指向你正確的渠道 –
Mikahil,我沒有讀取NN的評論作爲一個人試圖說明一個觀點。他只是指出你的解決方案是次優的,就我所知,他有一個有效的論點。解決方案的另一個問題是它也會影響查詢性能。希望還有另一種解決方法,或者最終由Google提供 – Zvi