このトピックでは、map関数と演算子の構文について説明します。 このトピックでは、関数と演算子の使用方法の例も示します。
機能 | 構文 | 説明 |
---|---|---|
サブスクリプト演算子 | [x] | マップからキーの値を取得するために使用されます。 |
cardinality関数 | cardinality(x) | マップのサイズを返します。 |
element_at関数 | element_at( x 、キー) | マップ内のキーの値を返します。 |
ヒストグラム関数 | histogram(x) | Groupsクエリと分析結果とリターンデータにJSON形式。 |
histogram_u機能 | histogram_u(x) | クエリと分析の結果をグループ化し、複数の行と複数の列のデータを返します。 |
map() 関数 | map() | 空のマップを返します。 |
マップ関数 | map( x 、y) | 2つの配列を使用して作成されたマップを返します。 |
map_agg関数 | map_agg( x 、y) | x とyを使用して作成されたマップを返します。 x はマップのキーです。 y は、マップ内のキーの値です。 y が複数の値を持つ場合、ランダムな値がキーの値として抽出されます。 |
map_concat関数 | map_concat( x 、y ...) | 複数のマップの和集合を返します。 |
map_filter機能 | map_filtermap_filter( x 、lambada_expression) | ラムダ式に基づいてマップ内の要素をフィルタリングし、新しいマップを返します。 |
map_keys関数 | map_keys(x) | マップのすべてのキーで構成される配列を返します。 |
map_values関数 | map_values(x) | マップのすべての値で構成される配列を返します。 |
multimap_agg関数 | multimap_agg( x 、y) | x とyを使用して作成されたマルチマップを返します。 x はマルチマップのキーです。 y はマルチマップのキーの値で、値は配列型です。 y が複数の値を持つ場合、すべての値がキーの値として抽出されます。 |
サブスクリプト演算子
下付き演算子は、マップからキーの値を取得するために使用されます。
構文
[x]
パラメーター
項目 | 説明 |
---|---|
x | Theこのパラメータの値はvarcharタイプ。 |
戻り値のデータ型
任意のデータ型。
例
データ変換タスクのログでは、etl_contextフィールドにはmap型の値があります。 添字演算子を使用して、etl_contextフィールドの値からprojectキーの値を取得できます。
- サンプルフィールド
etl_context: { プロジェクト: "datalab-148 **** 6461-cn-chengdu" logstore:"internal-etl-log" consumer_group:"etl-83 **** 4d1965" 消費者: 「etl-b2d40ed **** c8d6-291294」 shard_id:"0"}
- クエリ文
* | SELECT try_cast(json_parse(etl_context) AS map(varchar, varchar))['project']
- クエリおよび分析の結果
cardinality関数
cardinality関数は、マップのサイズを返します。
構文
cardinality(x)
パラメーター
項目 | 説明 |
---|---|
x | このパラメーターの値はmap型です。 |
戻り値のデータ型
bigint型。
例
各リクエストメソッドのリクエスト数を取得するには、histogram関数を使用します。 次に、cardinality関数を使用してリクエストメソッドの数を取得します。
- クエリ文
* | 選択 ヒストグラム (request_method) AS request_method, cardinality (ヒストグラム (request_method)) AS「種類」
- クエリおよび分析の結果
element_at関数
element_at関数は、マップ内のキーの値を返します。
構文
element_at( x 、キー)
パラメーター
項目 | 説明 |
---|---|
x | このパラメーターの値はmap型です。 |
キー | このパラメーターの値は、マップ内のキーです。 |
戻り値のデータ型
任意のデータ型。
例
各リクエストメソッドのリクエスト数を取得するには、histogram関数を使用します。 次に、element_at関数を使用してDELETEフィールドの値を取得します。
- クエリ文
* | 選択 ヒストグラム (request_method) AS request_method, element_at (ヒストグラム (request_method) 、'DELETE') AS "count"
- クエリおよび分析の結果
ヒストグラム関数
ヒストグラム関数は、クエリと分析の結果をグループ化し、JSON形式のデータを返します。 この関数は、* | SELECT count(*) GROUP BYx
と同等です。
構文
histogram(x)
パラメーター
項目 | 説明 |
---|---|
x | このパラメーターの値は任意のデータ型です。 |
戻り値のデータ型
マップタイプ。
例
各リクエストメソッドのリクエスト数を取得するには、histogram関数を使用します。
- クエリ文
* | SELECTヒストグラム (request_method) AS request_method
- クエリおよび分析の結果
histogram_u機能
histogram_u関数は、クエリと分析の結果をグループ化し、複数の行と複数の列のデータを返します。
構文
histogram_u(x)
パラメーター
項目 | 説明 |
---|---|
x | このパラメーターの値は任意のデータ型です。 |
戻り値のデータ型
bigint型。
例
histogram_u関数を使用して、各リクエストメソッドのリクエスト数を取得し、その数値を縦棒グラフに表示します。
- クエリ文
* | SELECT histogram_u(request_method) as request_method
- クエリおよび分析の結果
map() 関数
map() 関数は空のマップを返します。
構文
map()
戻り値のデータ型
マップタイプ。
例
map() 関数を使用して空のマップを取得します。
- クエリ文
* | SELECTマップ ()
- クエリおよび分析の結果
マップ関数
map関数は、2つの配列を使用して作成されたマップを返します。
構文
map( x 、y)
パラメーター
項目 | 説明 |
---|---|
x | このパラメーターの値は配列型です。 |
y | このパラメーターの値は配列型です。 |
戻り値のデータ型
マップタイプ。
例
classフィールドはクラスを指定します。 numberフィールドは、クラスの学生の数を指定します。 2つのフィールドの値は配列型です。 map関数を使用して、2つのフィールドの値に基づいてマップを作成します。 返された結果では、各クラスはクラス内の学生の数にマッピングされます。
- サンプルフィールド
class:["class01","class02","class03","class04","class05"] 番号:[49,50,45,47,50]
- クエリ文
* | SELECT map(try_cast(json_parse(class) AS array(varchar)) ,try_cast(json_parse(number) AS array(bigint)))
- クエリおよび分析の結果
map_agg関数
map_agg関数は、xとyを使用して作成されたマップを返します。 x はマップのキーです。 y は、マップ内のキーの値です。 y が複数の値を持つ場合、ランダムな値がキーの値として抽出されます。
構文
map_agg( x 、y)
パラメーター
項目 | 説明 |
---|---|
x | このパラメーターの値は任意のデータ型です。 |
y | このパラメーターの値は任意のデータ型です。 |
戻り値のデータ型
マップタイプ。
例
request_methodフィールドとrequest_timeフィールドの値を抽出し、抽出した値を使用してマップを作成します。 request_methodの値は、マップのキーです。 request_timeの値は、マップ内のキーの値です。
- サンプルフィールド
request_method:POST request_time:80
- クエリ文
* | SELECT map_agg(request_method,request_time)
- クエリおよび分析の結果
map_concat関数
map_concat関数は、複数のマップの和集合を返します。
構文
map_concat( x 、y)
パラメーター
項目 | 説明 |
---|---|
x | このパラメーターの値はmap型です。 |
y | このパラメーターの値はmap型です。 |
戻り値のデータ型
マップタイプ。
例
データ変換タスクのログでは、etl_contextフィールドとprogressフィールドにマップタイプの値があります。 You使用することができmap_concat機能値の和集合を取得する。
- サンプルフィールド
etl_context: { プロジェクト: "datalab-148 **** 6461-cn-chengdu" logstore:"internal-etl-log" consumer_group:"etl-83 **** 4d1965" 消費者: 「etl-b2d40ed **** c8d6-291294」 shard_id:"0"} progress: { 受け入れる: 3 ドロップ: 0 配信: 3 失敗した: 0}
- クエリ文
* | 選択 map_concat ( キャスト ( json_parse(etl_context) AS map(varchar, varchar) ), キャスト (json_parse(progress) AS map(varchar, varchar)) )
- クエリおよび分析の結果
map_filter機能
map_filter関数は、ラムダ式に基づいてマップ内の要素をフィルタリングし、新しいマップを返します。
構文
map_filter( x 、lambda_expression)
パラメーター
項目 | 説明 |
---|---|
x | このパラメーターの値はmap型です。 |
lambda_expression_expression | このパラメータは、ラムダ式のThe値。 詳細については、「Lambda 式」をご参照ください。 |
戻り値のデータ型
マップタイプ。
例
をCreateそんなに含まないヌル値から2アレイを使用してラムダ式 (k、v) -> vはないヌル
。
- クエリ文
* | SELECT map_filter(map(array [10,20, 30], array['a', NULL, 'c']), (k, v) -> vはnullではない)
- クエリおよび分析の結果
map_keys関数
map_keys関数は、マップのすべてのキーで構成される配列を返します。
構文
map_keys(x)
パラメーター
項目 | 説明 |
---|---|
x | このパラメーターの値はmap型です。 |
戻り値のデータ型
配列型。
例
データ変換タスクのログでは、etl_contextフィールドにはmap型の値があります。 map_keys関数を使用して、etl_contextフィールドの値のすべてのキーを取得できます。
- サンプルフィールド
etl_context: { プロジェクト: "datalab-148 **** 6461-cn-chengdu" logstore:"internal-etl-log" consumer_group:"etl-83 **** 4d1965" 消費者: 「etl-b2d40ed **** c8d6-291294」 shard_id:"0"}
- クエリ文
* | SELECT map_keys(try_cast(json_parse(etl_context) AS map(varchar, varchar)))
- クエリおよび分析の結果
map_values関数
The map_values機能リターン配列マップのすべての値で構成されて。
構文
map_values(x)
パラメーター
項目 | 説明 |
---|---|
x | このパラメーターの値はmap型です。 |
戻り値のデータ型
配列型。
例
データ変換タスクのログでは、etl_contextフィールドにはmap型の値があります。 You使用することができmap_values機能キーのすべての値を取得する価値にetl_コンテキストフィールド。
- サンプルフィールド
etl_context: { プロジェクト: "datalab-148 **** 6461-cn-chengdu" logstore:"internal-etl-log" consumer_group:"etl-83 **** 4d1965" 消費者: 「etl-b2d40ed **** c8d6-291294」 shard_id:"0"}
- クエリ文
* | SELECT map_values(try_cast(json_parse(etl_context) AS map(varchar, varchar)))
- クエリおよび分析の結果
multimap_agg関数
multimap_agg関数は、xとyを使用して作成されたマルチマップを返します。 x はマルチマップのキーです。 y はマルチマップのキーの値で、値は配列型です。 y が複数の値を持つ場合、すべての値がキーの値として抽出されます。
構文
multimap_agg( x 、y)
パラメーター
項目 | 説明 |
---|---|
x | このパラメーターの値は任意のデータ型です。 |
y | このパラメーターの値は任意のデータ型です。 |
戻り値のデータ型
マップタイプ。
例
request_methodおよびrequest_timeフィールドのすべての値を抽出し、抽出した値を使用してマルチマップを作成します。 request_methodの値は、マルチマップのキーです。 The値の要求_時間は値のキーmultimap、値のキーは配列型。
- サンプルフィールド
request_method:POST request_time:80
- クエリ文
* | SELECT multimap_agg(request_method,request_time)
- クエリおよび分析の結果