2017-07-03 108 views
0

我有以下要求。是否有元數據表來檢查BigQuery中的表是否已分區?

我們根據特定的功能分組在BQ中分割了1400個表格。 這些單獨的分片表的最大值也爲DAY進行了時間分區。

小表沒有時間分區。

我試圖在BigQuery中動態創建視圖,方法是在_partition時間內執行所有分片表的聯合並寫入WHERE過濾器條件。

但問題是可能有更小的表沒有時間分區,查詢失敗。

還有更多的表格在日常基礎上創建,我無法解決靜態排除解決方案,因爲這需要手動維護表名等文件(Apache Beam + BQ使用正在進入的數據並創建新的分片表更新的功能組沒有人工干預)

我試圖通過使用bq實用程序連接到BQ超過1000次,以檢查表是時間分區排除非時間分區的表。

bq show --format = prettyjson 並檢查「timepartitioning」「type」字段。

這是非常緩慢的,並沒有我所期望的那麼快。 (超過30分鐘)

我試過TABLES_SUMMARY但它沒有分區信息。我也檢查了 SELECT partition_id from [mydataset.table1 $ PARTITIONS_SUMMARY];

但是,如果表已經分區,這個工作。

問候。

回答

0

不幸的是,沒有辦法來動態確定它。

作爲一種解決方法,我建議將分區表和非分區表保存在不同的數據集中,或者包含有關表是否以其名稱分區的信息。

您還可以維護一個已知被分區的表前綴列表(如果維護起來更容易,那麼它是非分區的)。

您還可以在BigQuery的公開問題跟蹤器上打開功能請求:https://issuetracker.google.com/issues/new?component=187149&template=0