map_size
map_size
説明
MAP の要素数を返します。MAP はキーと値のペアの順不同の集合です。例えば {"a":1, "b":2}
です。1つのキーと値のペアが1つの要素です。例えば {"a":1, "b":2}
には2つの要素が含まれます。
この関数には cardinality() の別名があります。v2.5 からサポートされています。
構文
INT map_size(any_map)
パラメータ
any_map
: 要素数を取得したい MAP の値。
戻り値
INT 型の値を返します。
入力が NULL の場合、NULL が返されます。
MAP の値にキーまたは値が NULL の場合、NULL は通常の値として処理されます。
例
StarRocks ネイティブテーブルから MAP データをクエリする
StarRocks では v3.1 以降、テーブルを作成する際に MAP カラムを定義することがサポートされ ています。この例では、以下のデータを含む test_map
テーブルを使用します:
CREATE TABLE test_map(
col_int INT,
col_map MAP<VARCHAR(50),INT>
)
DUPLICATE KEY(col_int);
INSERT INTO test_map VALUES
(1,map{"a":1,"b":2}),
(2,map{"c":3}),
(3,map{"d":4,"e":5});
SELECT * FROM test_map ORDER BY col_int;
+---------+---------------+
| col_int | col_map |
+---------+---------------+
| 1 | {"a":1,"b":2} |
| 2 | {"c":3} |
| 3 | {"d":4,"e":5} |
+---------+---------------+
3 rows in set (0.05 sec)
col_map
カラムの各行の要素数を取得します。
select map_size(col_map) from test_map order by col_int;
+-------------------+
| map_size(col_map) |
+-------------------+
| 2 |
| 1 |
| 2 |
+-------------------+
3 rows in set (0.05 sec)
データレイクから MAP データをクエリする
この例では、以下のデータを含む Hive テーブル hive_map
を使用します:
SELECT * FROM hive_map ORDER BY col_int;
+---------+---------------+
| col_int | col_map |
+---------+---------------+
| 1 | {"a":1,"b":2} |
| 2 | {"c":3} |
| 3 | {"d":4,"e":5} |
+---------+---------------+
Hive カタログ をクラスタに作成した後、このカタログと map_size() 関数を使用して、col_map
カラムの各行の要素数を取得できます。
select map_size(col_map) from hive_map order by col_int;
+-------------------+
| map_size(col_map) |
+-------------------+
| 2 |
| 1 |
| 2 |
+-------------------+
3 rows in set (0.05 sec)