2013-11-23 62 views
0

我正在使用Google的雲存儲& BigQuery。我不是DBA,我是程序員。我希望這個問題具有足夠的通用性,可以幫助其他人。需要幫助設計數據庫 - 對於非DBA

我們從很多來源收集數據,並且很快就會開始實時收集數據。目前,每個來源都轉到一個獨立的表格。隨着新數據的進入,我們將其追加到相應的現有表中。

我們的數據分析要求每條記錄都有一個時間戳。然而,我們的源數據文件太大,無法編輯,然後再將它們添加到雲存儲(4 GB以上的文本數據/文件)。據我所知,沒有辦法在將每行添加到BigQuery之前追加一個時間戳列,對吧?

我們正在爲每個來源創建每日表格的想法。但不知道當我們有實時數據時這將如何工作。

任何提示/建議?

回答

1

目前,沒有辦法自動爲表格添加時間戳,儘管這是我們正在考慮的功能。

你說你的源文件太大了,無法在放入雲存儲之前編輯......這是否意味着整個源文件應該有相同的時間戳?如果是這樣,您可以導入到沒有時間戳的新BigQuery表,然後運行基本上覆製表的查詢,但添加時間戳。例如,SELECT all,fields, CURRENT_TIMESTAMP() FROM my.temp_table(您可能希望使用allow_large_results併爲該查詢設置目標表)。如果你想變得有點棘手,你可以使用數據集。 DATASET僞表可以獲取表的修改時間,然後將其作爲列添加到表中,無論是在單獨的查詢中還是在JOIN中。這裏是你如何使用DATASET僞表來獲取最後修改時間:

SELECT MSEC_TO_TIMESTAMP(last_modified_time) AS time 
FROM [publicdata:samples.__DATASET__] 
WHERE table_id = 'wikipedia' 

另一種選擇要考慮的是BigQuery的流API(更多信息here)。這使您只需將單行或一組行插入到表中,只需將它們直接發佈到bigquery即可。這可以爲您節省幾個步驟。

根據您打算如何查詢數據以及您有多少輸入源創建每日表格是一個合理的選項。如果這將使您的查詢跨越數百個表格,那麼您可能會看到糟糕的性能。請注意,如果您需要時間戳,因爲您想將查詢限制在特定的日期,並且這些日期在最近7天內,則可以使用時間範圍裝飾器(記錄here)。

+0

謝謝!這有助於。我將研究這些選項。 –