0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BigQueryで配列(ARRAY),構造体(STRUCT)を含むテーブルを作成(CREATE)/データ挿入(INSERT)する方法

Last updated at Posted at 2024-06-09

概要

BigQueryでつまづきやすい、ARRAYやSTRUCT。これらのデータにアクセスする方法は比較的記事が散見されるもののテーブル作成やデータ挿入方法については以外と記事が少ないので、自分のためにもまとめておく。

テーブル作成(CREATE)

CREATE TABLE `test_dataset.test_table` --作成するテーブルを指定
 (
    t TIMESTAMP, --通常のカラム
    a ARRAY<INT64>, --ARRAY型
    s STRUCT<v1 INT64,v2 STRING>, --STRUCT型
    key_value_array ARRAY<STRUCT<key STRING,int_value INT64, float_value FLOAT64, string_value STRING>> --ARRAY<STRUCT>型,
 )

配列型は、ARRAY<変数型>
構造体型は、STRUCT<列1 変数型,列2 変数型,…>
構造体の配列型はそれらを組み合わせて ARRAY<STRUCT<列1 変数型,列2 変数型,…>>
と指定すれば良い。

テータ挿入(INSERT INTO)

INSERT INTO `test_dataset.test_table`  
select
    CURRENT_TIMESTAMP() as t,
    [1,2,3,4] as a,
    struct(123,'test') as s,
    [struct('p1',123,CAST(null as FLOAT64),CAST(null as STRING)),struct('p2',CAST(null as INT64),11.1,'hoge')] as params,

配列型は [a,b,c,d]のようにブラケット(大括弧)[]で囲む
構造体型は struct(a,b) のようにstruct+カッコ()で囲む
構造体の配列型はそれらを組み合わせて [struct(a,b,c),struct(d,e,f),…] のように記載すれば良い。
なお、構造体要素にnull値を投入する時はINT64型以外の場合はnull値自体の型をcastしないとエラーが出る点は要注意。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?