BigQueryテーブルにデータをロードするためのベストプラクティスは何ですか?

プログラマー120

現在、からGoogle Storagestage_table_orders使用データを読み込んでいますWRITE_APPENDこのロードは新しい注文と既存の注文の両方をロードするため、同じ注文に複数のバージョンがある場合、フィールドetl_timestampはどの行が最も更新されているかを示します。

それから私WRITE_TRUNCATEは次のproduction_table_ordersようなクエリを使用します:

select ...
from (
    SELECT  * , ROW_NUMBER() OVER
    (PARTITION BY date_purchased, orderid order by etl_timestamp DESC) as rn 
    FROM `warehouse.stage_table_orders` )
where rn=1

その場合、production_table_orders常に各注文の最新バージョンが含まれます。

このプロセスは、3分ごとに実行されると想定されています

これがベストプラクティスかどうか疑問に思います。私は約2000万行あります。WRITE_TRUNCATE3分ごと2,000万行にするのは賢明ではないようです。

提案?

Yannick Einsweiler

私たちは同じことをしています。ただし、パフォーマンスを向上させるには、テーブルをでパーティション化しdate_purchased、クラスターを作成してみてくださいorderid事後にパーティションを追加することはできないため、CTASステートメントを(テーブル自体に)使用します。

編集:2つのテーブルとマージを使用します

特定のユースケース、つまり古いものと新しいものの間で更新できるフィールドの数に応じて、たとえばstage_table_ordersインポートされたレコードとfinal_table_orders宛先テーブルとして2つのテーブルを使用し、次のようにすることができますMERGE

MERGE final_table_orders F
USING stage_table_orders S
ON F.orderid = S.orderid AND
   F.date_purchased = S.date_purchased
WHEN MATCHED THEN
  UPDATE SET field_that_change = S.field_that_change
WHEN NOT MATCHED THEN
  INSERT (field1, field2, ...) VALUES(S.field1, S.field2, ...)    

プロ:数行は(テストされていませんが)、ない何百万人を「アップサート」されている場合は+プルーニングパーティションが効率的にすべき仕事。

短所:更新句と挿入句のフィールドを明示的にリストする必要があります。スキーマがほぼ修正されている場合は、1回限りの作業。

重複を排除する方法はいくつかあり、万能な方法はありません。SOで、、ARRAY_AGGまたはEXISTSwithDELETEまたはUNION ALL、...を使用して同様のリクエストを検索します。それらを試して、データセットに対してどちらが優れているかを確認してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

多層データをmySQLに保存するためのベストプラクティスは何ですか?

分類Dev

JHipsterに初期データを保存するためのベストプラクティスは何ですか?

分類Dev

AngularJSページをリロードするためのベストプラクティスは何ですか

分類Dev

ストリーミングデータフローからBigtableにアクセスするためのベストプラクティスは何ですか

分類Dev

QuickCheckの特定のプロパティを満たすデータを生成するためのベストプラクティスは何ですか?

分類Dev

大きなcsvを正規化されたリレーショナルデータベース(複数のテーブルを含む)にインポートするためのベストプラクティスは何ですか

分類Dev

さまざまなオブジェクトをUIViewsSwiftにロードするためのベストプラクティスは何ですか

分類Dev

開発ブランチをマスターブランチにマージするためのベストプラクティスは何ですか

分類Dev

MVCでは、テーブルの行に主キーを配置するためのベストプラクティスは何ですか

分類Dev

2台目のハードディスクにSteamをセットアップするためのベストプラクティスは何ですか?

分類Dev

無限スクロールGridViewをフラッターで実装するためのベストプラクティスは何ですか?

分類Dev

無限スクロールGridViewをフラッターで実装するためのベストプラクティスは何ですか?

分類Dev

Goウェブアプリでキーをロードするためのベストプラクティスは何ですか?

分類Dev

Laravel Blade:ブレードファイルにJavaScriptを追加するためのベストプラクティスは何ですか?

分類Dev

Codeigniter:複数のデータベース接続データを維持するためのベストプラクティスは何ですか?

分類Dev

Huawei AuthServiceを使用するときにユーザープロファイルを管理するためのベストプラクティスは何ですか

分類Dev

HTMLテーブルにデータを表示するためのベストプラクティス

分類Dev

プロジェクトOrleansのグレインでリレーショナルデータベースのレガシーデータを処理するためのベストプラクティスは何ですか?

分類Dev

データのレコードセットを含む単一値データを返すためのベストプラクティスは何ですか

分類Dev

テーブルからデータをクエリしながらエンティティを管理するためのベストプラクティスは?

分類Dev

ブートストラップのサイドパディングを増やすためのベストプラクティスは何ですか?

分類Dev

複雑なネストされたSQLアソシエーションを管理可能なサービスに変換するためのフロントエンドデータモデリングのベストプラクティスは何ですか?

分類Dev

Googleクラウドインフラストラクチャでデータベース/ディスクストレージをスケーリングするためのベストプラクティスは何ですか?

分類Dev

2つの異なるhttpエンドポイントからデータを取得するためのベストプラクティスは何ですか?

分類Dev

Rxハンドラーを実装するためのベストプラクティスは何ですか?

分類Dev

Amazon S3にSaaS顧客データを安全に保存/アクセスするためのベストプラクティスは何ですか?

分類Dev

X線デーモンを設定するためのベストプラクティスは何ですか?

分類Dev

光沢のあるサーバー: サーバー上のデータを更新するためのベスト プラクティスは何ですか

分類Dev

UIを介してデータベースを変更するときに、フロントエンドUIを更新するためのベストプラクティスは何ですか?

Related 関連記事

  1. 1

    多層データをmySQLに保存するためのベストプラクティスは何ですか?

  2. 2

    JHipsterに初期データを保存するためのベストプラクティスは何ですか?

  3. 3

    AngularJSページをリロードするためのベストプラクティスは何ですか

  4. 4

    ストリーミングデータフローからBigtableにアクセスするためのベストプラクティスは何ですか

  5. 5

    QuickCheckの特定のプロパティを満たすデータを生成するためのベストプラクティスは何ですか?

  6. 6

    大きなcsvを正規化されたリレーショナルデータベース(複数のテーブルを含む)にインポートするためのベストプラクティスは何ですか

  7. 7

    さまざまなオブジェクトをUIViewsSwiftにロードするためのベストプラクティスは何ですか

  8. 8

    開発ブランチをマスターブランチにマージするためのベストプラクティスは何ですか

  9. 9

    MVCでは、テーブルの行に主キーを配置するためのベストプラクティスは何ですか

  10. 10

    2台目のハードディスクにSteamをセットアップするためのベストプラクティスは何ですか?

  11. 11

    無限スクロールGridViewをフラッターで実装するためのベストプラクティスは何ですか?

  12. 12

    無限スクロールGridViewをフラッターで実装するためのベストプラクティスは何ですか?

  13. 13

    Goウェブアプリでキーをロードするためのベストプラクティスは何ですか?

  14. 14

    Laravel Blade:ブレードファイルにJavaScriptを追加するためのベストプラクティスは何ですか?

  15. 15

    Codeigniter:複数のデータベース接続データを維持するためのベストプラクティスは何ですか?

  16. 16

    Huawei AuthServiceを使用するときにユーザープロファイルを管理するためのベストプラクティスは何ですか

  17. 17

    HTMLテーブルにデータを表示するためのベストプラクティス

  18. 18

    プロジェクトOrleansのグレインでリレーショナルデータベースのレガシーデータを処理するためのベストプラクティスは何ですか?

  19. 19

    データのレコードセットを含む単一値データを返すためのベストプラクティスは何ですか

  20. 20

    テーブルからデータをクエリしながらエンティティを管理するためのベストプラクティスは?

  21. 21

    ブートストラップのサイドパディングを増やすためのベストプラクティスは何ですか?

  22. 22

    複雑なネストされたSQLアソシエーションを管理可能なサービスに変換するためのフロントエンドデータモデリングのベストプラクティスは何ですか?

  23. 23

    Googleクラウドインフラストラクチャでデータベース/ディスクストレージをスケーリングするためのベストプラクティスは何ですか?

  24. 24

    2つの異なるhttpエンドポイントからデータを取得するためのベストプラクティスは何ですか?

  25. 25

    Rxハンドラーを実装するためのベストプラクティスは何ですか?

  26. 26

    Amazon S3にSaaS顧客データを安全に保存/アクセスするためのベストプラクティスは何ですか?

  27. 27

    X線デーモンを設定するためのベストプラクティスは何ですか?

  28. 28

    光沢のあるサーバー: サーバー上のデータを更新するためのベスト プラクティスは何ですか

  29. 29

    UIを介してデータベースを変更するときに、フロントエンドUIを更新するためのベストプラクティスは何ですか?

ホットタグ

アーカイブ