2017-04-02 42 views
0

我試圖通過連接2個表來獲取記錄,在這種情況下,我會考慮6個月的數據。 我收到「資源超出錯誤」。加入2個表會導致BigQuery中的資源超出錯誤

任何人都可以請諮詢一些查詢增強,這將有助於我繞過這個錯誤?

在此先感謝!

SELECT 
     * 
    FROM (
     SELECT 
     A.Id1 AS Id1, 
     A.Id2 AS Id1, 
     StartTime, 
     StopTime, 
     Duration AS ID, 
     Latitude, 
     Longitude, 
     DateTime 
     FROM (
     SELECT 
      * 
     FROM 
      `Tb1` 
     WHERE 
      HardwareId IN (
      735, 
      8055, 
      8620, 
      9489, 
      214, 
      7543, 
      2471, 
      681, 
      451) 
      AND _PARTITIONTIME BETWEEN TIMESTAMP('2016-01-01') 
      AND TIMESTAMP('2016-12-31')) AS A 
     JOIN (
     SELECT 
      * 
     FROM 
      `Tb2.T2016*` 
     WHERE 
      _TABLE_SUFFIX BETWEEN "0601" 
      AND "1231" 
      AND HardwareId IN (
      735, 
      8055, 
      8620, 
      9489, 
      214, 
      7543, 
      2471, 
      681, 
      451)) AS B 
     ON 
     A.StartTime < B.DateTime 
     AND A.StopTime >= B.DateTime 
     AND A.Id1 = B.Id1) 
    ORDER BY 
     Id1, 
     Id2, 
     DateTime` 
+0

這是一張真正的桌子嗎? 'Tb2.T2016 *' – maSTAShuFu

+0

我已更改表名 – user3447653

+0

您的費率很低。重要的是 - 你可以在投票的下方用貼出答案左邊的勾號來標記接受答案。看到http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work#5235爲什麼它很重要!對答案投票也很重要。表決有用的答案。 ...當某人回答你的問題時,你可以檢查該怎麼做 - http://stackoverflow.com/help/someone-answers。遵循這些簡單的規則,您可以提高自己的聲譽得分,同時讓我們有動力回答您的問題:o)請考慮! –

回答

1

首先刪除您的查詢的ORDER BY部分!

ORDER BY 
    Id1, 
    Id2, 
    DateTime 

通常情況下,這是主要的原因

resources exceeded error in BigQuery 

我還注意到您的查詢的一些問題,最有可能涉及到的事實,你稍微掩蓋原始查詢

1 - 使用相同的列名稱

A.Id1 AS Id1, 
A.Id2 AS Id1, 

2 - 不同時間段

'2016年1月1日' - '2016年12月31日' 在

BETWEEN TIMESTAMP('2016-01-01') AND TIMESTAMP('2016-12-31') 

與 '2016年6月1日' - '2016年12月31日'

BETWEEN "0601" AND "1231" 
相關問題