2013-10-31 45 views
1

作爲背景,我一直在研究Google BigQuery以用作BI類型工具的後端平臺。我想指出我還沒有使用BigQuery,所以我的問題都是圍繞我在文檔中看到的。Google BigQuery添加/更新數據

高層計劃是 - 也許 - 將Big Query作爲構建在Tableau之上的儀表板的「實時」源。

顯然加載數據將使用使用JSON非規範化結構的最佳方式(支持嵌套)

我看到我的JSON看起來像這樣:

{ 
    FirstName: 'John', 
    LastName: 'Doe', 
    Orders: { 
     orderNo: 12345, 
     orderDate: '2013-01-01' 
     orderlines: { 
      lineNo: 1, 
      qty: 1, 
      price: 12, 
      productId: 1234 
      productName: 'Learning System', 
     productSubsystem: 'SUB' 
     } 
    }, 
    LeadScores: { 
     { 
     scoreName: 'Learning Tech', 
     scoreValue: 123, 
     scoreDate: '2013-01-01' 
     }, 
     { 
     scoreName: 'ScoreB', 
     scoreValue: 15, 
     scoreDate: '2013-01-01' 
     } 
    }, 
    Activities { 
    ** email opens, email clicks, page view, etc. (all here) ** 
     { 
     activityType: 'email', 
     activityAction: 'open', 
     activityDescription 'message-1234' 
     } 
    } 

} 

現在我的問題:

我可以將記錄追加到「內部」集合(如我想每天追加更多活動)嗎?還是它需要成爲另一個實體? (如洞JSON是一個單一的實體)

這個結構是否有意義,或者會有更好的「3」左右的實體(活動,訂單,人口統計,分數)和使用JOIN?我讀到BigQuery不喜歡使用JOIN。

一個潛在的結構可能是

對於成績:

{ 
    date: '2013-01-01', 
    scoreName: 'Score A', 
    scoreValue: '1234', 
    customerId: '123456' 
} 

對於活動:

{ 
    date: '2013-01-01', 
    activityType: 'email', 
    activityAction: 'open', 
    extra: '', 
    customerId: '123456' 
} 

人口統計學

{ 
     customerId: '123456', 
     firstName: 'A', 
     lastName: 'B', etc.. 

    } 

瓦這種方法更有意義嗎?

謝謝!

回答

1

問題a)很簡單:您可以添加行和列,但不能更改現有行。將數據添加到現有行的嵌套結構中將有資格作爲更改所述行 - 因此不可能。

問題b)是一個設計問題。你有基礎知識,但不知道你的查詢模式,很難優化。 BigQuery足夠靈活,可以同時工作,但優化需要更多數據。

一個很好的經驗法則是存儲很便宜:您可以保留規範化和非規範化的數據 - 並根據查詢進行選擇。最好的使用模式將以這種方式快速呈現!

+1

是的,我不想嘗試在一個圓孔中安裝一個方形釘。我需要給予更多的思考。我在bigquery上檢查了你的subreddit。偉大的東西那裏。遺憾的是GA數據僅適用於高端客戶。這麼多潛力! Thx再次 – turtlepick

+0

是的,關於BQ的分析是非常有用的。在設計上,遵循的經驗法則是存儲便宜:您可以保留標準化和非標準化數據 - 並根據查詢進行選擇。 –

相關問題