web-dev-qa-db-ja.com

BigQueryに自動インクリメントはありますか?

BigQueryにAUTO_INCREMENT、SERIAL、IDENTITY、またはシーケンスのようなものはありますか?

ROW_NUMBERを認識しています https://cloud.google.com/bigquery/query-reference#row-number
しかし、テーブルのすべての行に対して生成された一意のIDを保持したいと思います。

9
JoseKilo

BigQueryには、ロード時の行キー生成の概念がありません。クエリを使用してテーブルを書き直し、行の任意のキーを生成できます。

お気づきのように、ROW_NUMBERは各行に一意のインデックスを提供しますが、 特に大きなテーブルのサイズ制限 (パーティション化されていないウィンドウ関数が必要になるためすべて)。

より大きな文字列キーを許容できる場合は、行ごとにUUIDを生成することを検討してください(これはランダムに実行でき、残りのデータとの調整は必要ありません)。残念ながら、BigQueryには組み込みのUUID()関数がありませんが、Rand()を何度か呼び出すことで同等のことを行うことができます。これは、JavascriptUDFとして表現する方が簡単な場合があります。

リンクされた回答では、Felipeは複合キーを作成します。これは、キーの組み合わせが異なる場合にも、機能する可能性があります。

6
Adam Lydick