BigQueryのクエリ結果にSTRUCTが含まれる場合はCSVで保存できない


BigQueryのWeb UIでクエリ結果を保存できない

ちょっとしたクエリ結果などをCSVに保存したり、クリップボードにコピーできず、ハマったことがありました。
しかも特にエラーは表示されないので、知らないと何が問題なのかわかりません、、

クエリ例

WITH t AS (SELECT STRUCT(1 AS x, 2 AS y, 3 AS z))
SELECT * FROM t

たとえば上記のように、クエリ結果にSTRUCTが含まれているとCSV出力されません。

解決策

WITH t AS (SELECT STRUCT(1 AS x, 2 AS y, 3 AS z))
SELECT AS VALUE * FROM t

SELECT AS VALUE を使い値テーブルを生成します。
ただし、これが使えるのはクエリ結果が1列だけの場合のみです。

標準 SQL のクエリ構文  |  BigQuery  |  Google Cloud

補足

もちろん、上記のようにCSVに保存できない場合でもJSONに保存することはできます。