3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ZOZOAdvent Calendar 2021

Day 13

bqコマンドに渡しているスキーマのJSONが間違っていてもクエリが実行されてしまう問題

Last updated at Posted at 2021-12-12

bq queryコマンドにdestination_tableオプションを渡すとSELECT結果をテーブルにすることができます。
また、この時にdestination_schemaオプションも同時に渡すと、テーブルのスキーマを設定できます。

ただし、この機能は壊れたJSONを渡したときの挙動に注意が必要です。
例えば、以下のような壊れたJSONを渡した時に、bqコマンドは失敗しますが、クエリは実行されdestination_tableに指定したテーブルは生成されてしまいます。
また、destination_schemaに対して存在しないファイルを渡した場合も同様にテーブルが生成されてしまいます。

[
 {
   "name": "col1",
   "type": "INTEGER",
   "mode": "NULLABLE"

そのため、例えばJSONファイルの中でColumn level Security機能のためのpolicy tagを付与するような場合は、tagが付与されていないテーブルはが作られてしまいます。

この挙動が問題になる場合は、JSONファイルが壊れていないかどうかをbqコマンドの実行前に確認するようにしましょう。
なお、この問題はIssueトラッカーには上がっていますが、現時点ではまだ修正されていないようです。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?