メインコンテンツまでスキップ

cardinality

カーディナリティ

説明

MAP の値内の要素数を返します。MAP はキーと値のペアの順不同のコレクションであり、例えば {"a":1, "b":2} です。1 つのキーと値のペアが 1 つの要素となります。{"a":1, "b":2} には 2 つの要素が含まれています。

この関数は v3.0 以降でサポートされており、map_size() の別名です。

構文

INT cardinality(any_map)

パラメータ

any_map: 要素数を取得したい MAP の値です。

戻り値

INT の値を返します。

入力が NULL の場合は NULL が返されます。

MAP の値内のキーまたは値が NULL の場合、NULL は通常の値として処理されます。

StarRocks ネイティブテーブルからの MAP データのクエリ

v3.1 以降、StarRocks はテーブルを作成する際に 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 cardinality(col_map) from test_map order by col_int;
+----------------------+
| cardinality(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 カタログ がクラスタに作成された後、このカタログと cardinality() 関数を使用して、col_map 列の各行の要素数を取得できます。

SELECT cardinality(col_map) FROM hive_map ORDER BY col_int;
+----------------------+
| cardinality(col_map) |
+----------------------+
| 2 |
| 1 |
| 2 |
+----------------------+
3 rows in set (0.05 sec)