このトピックでは、map関数と演算子の構文について説明します。 このトピックでは、関数と演算子の使用方法の例も示します。

次の表に、Log Serviceでサポートされているマップ関数と演算子を示します。
重要 分析ステートメントで文字列を使用する場合は、文字列を単一引用符 (')で囲む必要があります。 二重引用符 (") で囲まれていない、または囲まれている文字列は、フィールド名または列名を示します。 例えば、 'status' はステータスの文字列を示し、status または "status" はステータスログフィールドを示します。
機能構文説明
サブスクリプト演算子[x]マップからキーの値を取得するために使用されます。
cardinality関数cardinality(x)マップのサイズを返します。
element_at関数element_at( xキー)マップ内のキーの値を返します。
ヒストグラム関数histogram(x)Groupsクエリと分析結果とリターンデータにJSON形式。
histogram_u機能histogram_u(x)クエリと分析の結果をグループ化し、複数の行と複数の列のデータを返します。
map() 関数map()空のマップを返します。
マップ関数map( xy) 2つの配列を使用して作成されたマップを返します。
map_agg関数map_agg( xy)xyを使用して作成されたマップを返します。 x はマップのキーです。 y は、マップ内のキーの値です。 y が複数の値を持つ場合、ランダムな値がキーの値として抽出されます。
map_concat関数map_concat( xy ...)複数のマップの和集合を返します。
map_filter機能map_filtermap_filter( xlambada_expression)ラムダ式に基づいてマップ内の要素をフィルタリングし、新しいマップを返します。
map_keys関数map_keys(x) マップのすべてのキーで構成される配列を返します。
map_values関数map_values(x)マップのすべての値で構成される配列を返します。
multimap_agg関数multimap_agg( xy)xyを使用して作成されたマルチマップを返します。 x はマルチマップのキーです。 y はマルチマップのキーの値で、値は配列型です。 y が複数の値を持つ場合、すべての値がキーの値として抽出されます。

サブスクリプト演算子

下付き演算子は、マップからキーの値を取得するために使用されます。

構文

[x]

パラメーター

項目説明
xTheこのパラメータの値は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「種類」
  • クエリおよび分析の結果cardinality

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"
  • クエリおよび分析の結果element_at

ヒストグラム関数

ヒストグラム関数は、クエリと分析の結果をグループ化し、JSON形式のデータを返します。 この関数は、* | SELECT count(*) GROUP BYxと同等です。

構文

histogram(x)

パラメーター

項目説明
xこのパラメーターの値は任意のデータ型です。

戻り値のデータ型

マップタイプ。

各リクエストメソッドのリクエスト数を取得するには、histogram関数を使用します。

  • クエリ文
    * | SELECTヒストグラム (request_method) AS request_method
  • クエリおよび分析の結果histogram

histogram_u機能

histogram_u関数は、クエリと分析の結果をグループ化し、複数の行と複数の列のデータを返します。

構文

histogram_u(x)

パラメーター

項目説明
xこのパラメーターの値は任意のデータ型です。

戻り値のデータ型

bigint型。

histogram_u関数を使用して、各リクエストメソッドのリクエスト数を取得し、その数値を縦棒グラフに表示します。

  • クエリ文
    * | SELECT histogram_u(request_method) as request_method
  • クエリおよび分析の結果histogram_u

map() 関数

map() 関数は空のマップを返します。

構文

map()

戻り値のデータ型

マップタイプ。

map() 関数を使用して空のマップを取得します。

  • クエリ文
    * | SELECTマップ ()
  • クエリおよび分析の結果Map

マップ関数

map関数は、2つの配列を使用して作成されたマップを返します。

構文

map( xy) 

パラメーター

項目説明
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

map_agg関数

map_agg関数は、xyを使用して作成されたマップを返します。 x はマップのキーです。 y は、マップ内のキーの値です。 y が複数の値を持つ場合、ランダムな値がキーの値として抽出されます。

構文

map_agg( xy)

パラメーター

項目説明
xこのパラメーターの値は任意のデータ型です。
yこのパラメーターの値は任意のデータ型です。

戻り値のデータ型

マップタイプ。

request_methodフィールドとrequest_timeフィールドの値を抽出し、抽出した値を使用してマップを作成します。 request_methodの値は、マップのキーです。 request_timeの値は、マップ内のキーの値です。

  • サンプルフィールド
    request_method:POST
    request_time:80
  • クエリ文
    * | SELECT map_agg(request_method,request_time)
  • クエリおよび分析の結果map_agg

map_concat関数

map_concat関数は、複数のマップの和集合を返します。

構文

map_concat( xy)

パラメーター

項目説明
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_concat

map_filter機能

map_filter関数は、ラムダ式に基づいてマップ内の要素をフィルタリングし、新しいマップを返します。

構文

map_filter( xlambda_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_filter

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_keys

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)))
  • クエリおよび分析の結果map_values

multimap_agg関数

multimap_agg関数は、xyを使用して作成されたマルチマップを返します。 x はマルチマップのキーです。 y はマルチマップのキーの値で、値は配列型です。 y が複数の値を持つ場合、すべての値がキーの値として抽出されます。

構文

multimap_agg( xy)

パラメーター

項目説明
xこのパラメーターの値は任意のデータ型です。
yこのパラメーターの値は任意のデータ型です。

戻り値のデータ型

マップタイプ。

request_methodおよびrequest_timeフィールドのすべての値を抽出し、抽出した値を使用してマルチマップを作成します。 request_methodの値は、マルチマップのキーです。 The値の要求_時間は値のキーmultimap、値のキーは配列型。

  • サンプルフィールド
    request_method:POST
    request_time:80
  • クエリ文
    * | SELECT multimap_agg(request_method,request_time)
  • クエリおよび分析の結果multimap_agg