2016-08-19 42 views
1

我試圖將每月表格分解到每日表格中以提高性能。假設我有n行的下面的模式:從Bigquery的每月表格到每日表格

field1 STRING NULLABLE  
field2 STRING NULLABLE  
field3 RECORD NULLABLE  
field4 STRING REPEATED  
field5 STRING REPEATED  
field5 STRING REPEATED  
field6 STRING NULLABLE 
. 
. 
. 
. 
fieldn STRING REPEATED 

我試圖創建一個Web UI中的表,查詢每天的數據,保存結果到另一個表(每日表)[1]。但我有很多REPEATED列,所以我不得不FLATTEN表。

SELECT 
    ... 
FROM (
    FLATTEN((
     SELECT 
     ... 
     FROM (
      FLATTEN((
      SELECT 
       ... 
      FROM 
       table), 
      field3) 
     ) 
     ), 
     f4) 
    ) 
) 

我不想爲每個重複列創建多個記錄,我想保留每月表的模式和信息。什麼是最好的方法來做到這一點?

+0

目前還不清楚你到底嘗試了什麼!請修改您的問題以顯示您遇到問題的代碼的[最小化,完整和可驗證示例](http://stackoverflow.com/help/mcve),然後我們可以嘗試幫助解決特定問題。你也可以閱讀[如何問](http://stackoverflow.com/help/how-to-ask)。 –

+0

編輯,謝謝! –

+0

也許你想遷移到分區表:https://cloud.google.com/bigquery/docs/creating-partitioned-tables –

回答

3

在網絡用戶界面 - 維護模式 - 你應該做以下

  1. 單擊 「顯示選項」

對於傳統的SQL

  • 套裝表
  • 選中「允許大型結果」複選框
  • 取消選中「拼合結果」複選框
  • 使用標準SQL

  • 設置表
  • 取消選中 「使用傳統的SQL」 複選框
  • 然後,你應該如下使用:

    SELECT * FROM YourTable WHERE <condition to filter given day rows>