すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:マップ関数と演算子

最終更新日:Nov 19, 2024

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

次の表に、Simple Log Serviceでサポートされているマップ関数と演算子を示します。

重要 分析ステートメントで文字列を使用する場合は、文字列を単一引用符 (')で囲む必要があります。 二重引用符 (") で囲まれていない、または囲まれている文字列は、フィールド名または列名を示します。 例えば、 'status' はステータスの文字列を示し、status または "status" はステータスログフィールドを示します。

関数

構文

説明

SQLでサポート

SPLでサポート

サブスクリプト演算子

[x]

マップからキーの値を返します。

×

カーディナリティ関数

cardinality( x)

マップのサイズを返します。

×

element_at関数

element_at( x, key)

マップからキーの値を返します。

ヒストグラム関数

ヒストグラム (x)

クエリと分析の結果をグループ化し、JSON形式でデータを返します。

×

histogram_u関数

histogram_u( x)

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

×

マップ関数

map()

空のマップを返します。

マップ (x, y)

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

map_agg関数

map_agg( x, y)

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

×

map_concat関数

map_concat( x, y ...)

複数のマップの和集合を返します。

map_filter関数

map_filter( x, lambda_expression)

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

map_keys関数

map_keys( x)

マップ内のすべてのキーで構成される配列を返します。

map_values関数

map_values( x)

マップ内のすべての値で構成される配列を返します。

multimap_agg関数

multimap_agg( x, y)

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

×

サブスクリプト演算子

下付きの演算子は、マップからキーの値を返します。

構文

[x]

パラメーター

パラメーター

説明

x

このパラメーターの値はvarchar型です。

戻り値のデータ型

任意のデータ型。

データ変換ジョブによって変換されるログでは、etl_contextフィールドの値はmap型です。 添字演算子を使用して、etl_contextフィールドの値からprojectキーの値を取得できます。

  • サンプルフィールド

    etl_context: {
     project:"datalab-148****6461-cn-chengdu"
     logstore:"internal-etl-log"
     consumer_group:"etl-83****4d1965"
     consumer:"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関数を使用してリクエストメソッドの数を取得します。

  • クエリ文

    * |
    SELECT
      histogram(request_method) AS request_method,
      cardinality(histogram(request_method)) AS "kinds"
  • クエリと分析結果 cardinality

element_at関数

element_at関数は、マップからキーの値を返します。

構文

element_at(x, key)

パラメーター

パラメーター

説明

x

このパラメーターの値はmap型です。

キー

このパラメーターの値は、マップ内のキーです。

戻り値のデータ型

任意のデータ型。

各リクエストメソッドのリクエスト数を取得するには、histogram関数を使用します。 次に、element_at関数を使用してDELETEフィールドの値を取得します。

  • クエリ文

    * |
    SELECT
      histogram(request_method) AS request_method,
      element_at(histogram(request_method),'DELETE') AS "count"
  • クエリと分析結果 element_at

ヒストグラム関数

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

構文

histogram(x)

パラメーター

パラメーター

説明

x

このパラメーターの値は任意のデータ型です。

戻り値のデータ型

マップタイプ。

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

  • クエリ文

    * | SELECT histogram(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関数は空のマップを返すか、2つの配列を使用して作成されたマップを返します。

構文

  • map関数の次の構文は、空のマップを返します。

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

    map(x,y) 

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

y

このパラメーターの値は配列型です。

戻り値のデータ型

マップタイプ。

  • 例1: classフィールドはクラスを指定します。 numberフィールドは、クラスの学生の数を指定します。 2つのフィールドの値は配列型です。 map関数を使用して、2つのフィールドの値に基づいてマップを作成します。 返された結果では、各クラスはクラス内の学生の数にマッピングされます。

    • サンプルフィールド

      class:["class01","class02","class03","class04","class05"]
      number:[49,50,45,47,50]
    • クエリ文

      * | SELECT map(try_cast(json_parse(class) AS array(varchar)) ,try_cast(json_parse(number) AS array(bigint)))
    • クエリと分析結果 map

  • 例2: 空のマップを返します。

    • クエリ文

      *| SELECT map()
    • クエリと分析結果 map

map_agg関数

map_agg関数は、xyを使用して作成されたマップを返します。 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_agg

map_concat関数

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

構文

map_concat(x, y)

パラメーター

パラメーター

説明

x

このパラメーターの値はmap型です。

y

パラメータは、マップデータ型とすることができる。

戻り値のデータ型

マップタイプ。

データ変換ジョブによって変換されるログでは、etl_contextフィールドとprogressフィールドの値はマップ型です。 map_concat関数を使用して、フィールド値の和集合を取得できます。

  • サンプルフィールド

    etl_context: {
     project:"datalab-148****6461-cn-chengdu"
     logstore:"internal-etl-log"
     consumer_group:"etl-83****4d1965"
     consumer:"etl-b2d40ed****c8d6-291294"
     shard_id:"0" }
    progress: {
     accept:3
     dropped:0
     delivered:3
     failed:0 }
  • クエリ文

    * |
    SELECT
      map_concat(
        cast (
          json_parse(etl_context) AS map(varchar, varchar)
        ),
        cast (json_parse(progress) AS map(varchar, varchar))
      )
  • クエリと分析結果 map_concat

map_filter関数

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

構文

map_filter(x, lambda_expression)

パラメーター

パラメーター

説明

x

このパラメーターの値はmap型です。

lambda_expression_expression

ラムダ式。 詳細は、「Lambda式」をご参照ください。

戻り値のデータ型

マップタイプ。

ラムダ式 (k, v) -> v is not nullを使用して、2つの配列のnull値を含まないマップを作成します。

  • クエリ文

    * | SELECT map_filter(map(array[10, 20, 30], array['a', NULL, 'c']), (k, v) -> v is not null)
  • クエリと分析結果 map_filter

map_keys関数

map_keys関数は、マップ内のすべてのキーで構成される配列を返します。

構文

map_keys(x)

パラメーター

パラメーター

説明

x

このパラメーターの値はmap型です。

戻り値のデータ型

配列型。

データ変換ジョブによって変換されるログでは、etl_contextフィールドの値はmap型です。 map_keys関数を使用して、etl_contextフィールドの値からすべてのキーを取得できます。

  • サンプルフィールド

    etl_context: {
     project:"datalab-148****6461-cn-chengdu"
     logstore:"internal-etl-log"
     consumer_group:"etl-83****4d1965"
     consumer:"etl-b2d40ed****c8d6-291294"
     shard_id:"0" }
  • クエリ文

    * | SELECT map_keys(try_cast(json_parse(etl_context) AS map(varchar, varchar)))
  • クエリと分析結果 map_keys

map_values関数

map_values関数は、マップ内のすべての値で構成される配列を返します。

構文

map_values(x)

パラメーター

パラメーター

説明

x

このパラメーターの値はmap型です。

戻り値のデータ型

配列型。

データ変換ジョブによって変換されるログでは、etl_contextフィールドの値はmap型です。 map_values関数を使用して、etl_contextフィールドの値からすべてのキーの値を取得できます。

  • サンプルフィールド

    etl_context: {
     project:"datalab-148****6461-cn-chengdu"
     logstore:"internal-etl-log"
     consumer_group:"etl-83****4d1965"
     consumer:"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(x, y)

パラメーター

パラメーター

説明

x

このパラメーターの値は任意のデータ型です。

y

このパラメーターの値は任意のデータ型です。

戻り値のデータ型

マップタイプ。

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

  • サンプルフィールド

    request_method:POST
    request_time:80
  • クエリ文

    * | SELECT multimap_agg(request_method,request_time)
  • クエリと分析結果 multimap_agg