web-dev-qa-db-ja.com

クエリを実行してBigQueryテーブルにエクスポートすることにより、BigQueryテーブルの列タイプを変更するにはどうすればよいですか?

BigQueryテーブルにintegerタイプの列があり、それをfloat列に変換する必要があります。また、すべての記録を保持する必要があります。私がやりたいのは列タイプの変更です。キャストしていません。

テーブルに対するクエリの結果をそれ自体にエクスポートするだけでそれを行うことが可能であることを読みました。

どうやるか?

9
scaryguy

SELECTを使用して結果をテーブルに書き戻す

SELECT 
  CAST(int_field AS FLOAT) AS float_field, 
  <all_other_fields> 
FROM YourTable

このアプローチでは、テーブル全体をスキャンできます

これを実行するには、BQ Web UIShow Optionボタンを使用する必要があります以下の例のようにオプションを適切に設定します。これを実行すると、テーブルには、必要に応じてfloatと元の整数データ型の列が作成されます。注:int_fieldとfloat_fieldの両方に適切な/同じフィールド名を使用する必要があります

enter image description here

新しい列を追加する必要がある場合は、 表:パッチGBQ API を指定します。
このAPIで列のタイプを変更できるかどうかはわかりませんが、疑わしいですが、簡単に確認できます。

ジョブ:挿入 EXTRACTを使用してからLOADを使用する

ここでは、テーブルをGCSに抽出し、調整されたスキーマを使用してGBQにロードし直すことができます。

上記のアプローチは、a)テーブルのクエリ(スキャン)のコストコストを排除し、b)複雑なスキーマ(レコード/繰り返し/ネストなどのタイプ/モード)がある場合に発生する可能性のある制限に役立ちます。

15