カテゴリ:

半構造化データ関数と構造化データ関数 (配列/オブジェクト)

ARRAY_SIZE

入力配列のサイズを返します。

ARRAY_SIZE のバリエーションは、入力として VARIANT 値を取ります。VARIANT 値に配列が含まれる場合、配列のサイズが返されます。それ以外の場合、値が配列でない場合は NULL が返されます。

構文

ARRAY_SIZE( <array> )

ARRAY_SIZE( <variant> )
Copy

戻り値

戻り値のデータ型は INTEGER です。

使用上の注意

  • 入力として ARRAY 値を取り、配列のサイズ(最大のインデックス+ 1)を返します。

    配列が 配列の場合、これは、サイズに未定義の要素と定義済みの要素が含まれることを意味します。

  • NULL 引数は結果として NULL を返します。

以下に簡単な例を示します。

SELECT ARRAY_SIZE(ARRAY_CONSTRUCT(1, 2, 3)) AS SIZE;
+------+
| SIZE |
|------|
|    3 |
+------+
Copy

以下はもう少し複雑な例です。今回は VARIANT データ型を使用しています。

CREATE OR replace TABLE colors (v variant);

INSERT INTO
   colors
   SELECT
      parse_json(column1) AS v
   FROM
   VALUES
     ('[{r:255,g:12,b:0},{r:0,g:255,b:0},{r:0,g:0,b:255}]'),
     ('[{r:255,g:128,b:0},{r:128,g:255,b:0},{r:0,g:255,b:128},{r:0,g:128,b:255},{r:128,g:0,b:255},{r:255,g:0,b:128}]')
    v;
Copy

VARIANT 列の各配列のサイズを取得します。

SELECT ARRAY_SIZE(v) from colors;
+---------------+
| ARRAY_SIZE(V) |
|---------------|
|             3 |
|             6 |
+---------------+
Copy

VARIANT 列の各配列の最後の要素を取得します。

SELECT GET(v, ARRAY_SIZE(v)-1) FROM colors;
+-------------------------+
| GET(V, ARRAY_SIZE(V)-1) |
|-------------------------|
| {                       |
|   "b": 255,             |
|   "g": 0,               |
|   "r": 0                |
| }                       |
| {                       |
|   "b": 128,             |
|   "g": 0,               |
|   "r": 255              |
| }                       |
+-------------------------+
Copy