このトピックでは、マッピング関数とエンリッチメント関数の構文とパラメーターについて説明します。 このトピックでは、関数の使用方法の例も示します。
関数
カテゴリ | 関数 | 説明 |
フィールドベースのマッピング | 入力フィールドの値を指定されたデータディクショナリの値にマップし、新しいフィールドを返します。 この関数は、他の関数と一緒に使用できます。 詳細については、「e_dict_map関数を使用したログデータの強化」をご参照ください。 | |
入力フィールドの値を指定されたテーブルの行にマップし、新しいフィールドを返します。 この関数は、他の関数と一緒に使用できます。 詳細については、「e_table_map関数を使用したHTTPレスポンスステータスコードの強化」をご参照ください。 | ||
Tablestoreのデータテーブルをディメンションテーブルとして使用して、生ログを強化します。 | ||
ApsaraDB for Redisのデータテーブルをディメンションテーブルとして使用して、生ログを強化します。 |
e_dict_map
e_dict_map関数は、入力フィールドの値を指定されたデータディクショナリの値にマップし、新しいフィールドを返します。
構文
e_dict_map(data, field, output_field, case_insensitive=True, missing=None, mode="overwrite")
パラメーター
パラメーター
タイプ
必須
説明
データ
ディクト
必須
マッピングに使用されるデータ辞書。 このパラメーターの値は、標準形式
{key01:value01,key01:value02,...}
である必要があります。 キーは文字列でなければなりません。 例:{"1": "TCP", "2": "UDP", "3": "HTTP", "*": "Unknown"}
フィールド
String or string list
必須
1つ以上のフィールド名。 このパラメーターの値に複数のフィールド名が含まれている場合、システムは次の操作を実行します。
システムは、フィールド名に対して順にマッピングを実行する。
システムがフィールドの複数の値に一致し、modeパラメーターがoverwriteに設定されている場合、システムは最後に一致した値を返します。
システムがフィールドの値と一致しない場合、システムはmissingパラメーターの値を返します。
output_field
String
必須
関数を返すフィールドの名前。
case_insensitive
ブール値
選択可能
マッピング中に大文字と小文字の区別を無効にするかどうかを指定します。
True: 大文字と小文字の区別を無効にします。 デフォルト値です。
False: ケースの感度を有効にします。
説明データディクショナリに大文字小文字のみが異なる複数のキーが含まれ、case_insensitiveパラメーターがTrueに設定されている場合、システムは最初に入力フィールドの値を、値と同じ大文字小文字を使用するキーにマップします。 同じケースを使用するキーが存在しない場合、システムは値を複数のキーの1つにランダムにマッピングします。
行方不明
String
任意
入力フィールドに一致が見つからない場合に、output_fieldで指定されたフィールドに割り当てられる値。 デフォルト値: None。割り当てが実行されないことを示します。
説明データディクショナリにアスタリスク (*) のキーが含まれている場合、
missing
パラメーターは無効になります。 これは、アスタリスク (*) が欠落
しているパラメーターよりも優先度が高いためです。モード
String
任意
フィールドの上書きモード。 デフォルト値: overwrite 詳細については、「フィールド抽出のチェックモードと上書きモード」をご参照ください。
レスポンス
新しいフィールドを含むログが返されます。
例
例1: 生ログのproフィールドの値をデータディクショナリの値にマップし、protocolという名前の新しいフィールドを生成します。
生ログ
data: 123 pro: 1
変換ルール
e_dict_map( {"1": "TCP", "2": "UDP", "3": "HTTP", "6": "HTTPS", "*": "Unknown"}, "pro", "protocol", )
結果
data: 123 pro: 1 protocol: TCP
例2: 生ログのstatusフィールドの値をデータディクショナリの値にマッピングし、messageという名前の新しいフィールドを生成します。
生ログ
status: 500
status: 400
status: 200
変換ルール
e_dict_map({"400": "Error", "200": "Success", "*": "Other"}, "status", "message")
結果
status: 500 message: Other
status: 400 message: Error
status: 200 message: Success
関連ドキュメント
この関数は、他の関数と一緒に使用できます。 詳細については、「e_dict_map関数を使用したログデータの強化」をご参照ください。
e_table_map
e_table_map関数は、入力フィールドの値を指定されたテーブルの行にマップし、新しいフィールドを返します。
構文
e_table_map(data, field, output_fields, missing=None, mode="fill-auto")
パラメーター
パラメーター
タイプ
必須
説明
データ
テーブル
必須
マッピングに使用されるテーブル。
説明リソース関数
res_rds_mysql
およびres_log_logstore_pull
をデータソースとして使用する場合、primary_keys
パラメーターを設定する必要があります。 そうしないと、パフォーマンスに深刻な影響を与え、タスクの遅延を引き起こす可能性があります。primary_keys
パラメーターの設定方法の詳細については、「Resource functions」をご参照ください。フィールド
文字列、文字列リスト、またはタプルリスト
必須
入力フィールド。 ログにフィールドが含まれていない場合、ログに対する操作は実行されません。
output_fields
文字列、文字列リスト、またはタプルリスト
必須
出力フィールド。 例:
["province", "pop"]
行方不明
String
任意
入力フィールドに一致しない場合に、output_fieldsで指定されたフィールドに割り当てられる値。 デフォルト値: None。割り当てが実行されないことを示します。 入力フィールドを複数の列にマッピングする場合は、
missing
パラメーターを入力フィールドに対応するデフォルト値のリストに設定できます。 デフォルト値の数は、列の数と同じでなければなりません。説明テーブルにアスタリスク (*) の列が含まれている場合、
missing
パラメーターは無効になります。 これは、アスタリスク (*) が欠落
しているパラメーターよりも優先度が高いためです。モード
String
任意
フィールドの上書きモード。 デフォルト値: fill-auto 詳細については、「フィールド抽出のチェックモードと上書きモード」をご参照ください。
レスポンス
新しいフィールドを含むログが返されます。
例
例1: cityフィールドの値をテーブルの行にマッピングし、その行のprovinceフィールドの値を返します。
生ログ
data: 123 city: nj
変換ルール
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), "city", "province" )
結果
data: 123 city: nj province: js
例2: cityフィールドの値をテーブルの行にマッピングし、その行のprovinceフィールドとpopフィールドの値を返します。
生ログ
data: 123 city: nj
変換ルール
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), "city", ["province", "pop"], )
結果
data: 123 city: nj province: js pop: 800
例3: tab_parse_csv関数を使用してテーブルを作成し、cityフィールドの値をテーブルの行にマッピングし、その行のprovinceフィールドとpopフィールドの値を返します。
生ログ
data: 123 city: nj
変換ルール
e_table_map( tab_parse_csv("city#pop#province\nnj#800#js\nsh#2000#sh", sep="#"), "city", ["province", "pop"], )
結果
data: 123 city: nj province: js pop: 800
例4: tab_parse_csv関数を使用してテーブルを作成し、cityフィールドの値をテーブルの行にマッピングし、その行のprovinceフィールドとpopフィールドの値を返します。
生ログ
data: 123 city: nj
変換ルール
e_table_map( tab_parse_csv( "city,pop,province\n|nj|,|800|,|js|\n|shang hai|,2000,|SHANG,HAI|", quote="|" ), "city", ["province", "pop"], )
結果
data: 123 city: nj province: js pop: 800
例5: 入力フィールドは、マッピングに使用されるテーブルの対応するフィールドとは異なります。 ctyフィールドとcityフィールドに基づいてテーブル内の行を検索し、その行のprovinceフィールドの値を返します。
生ログ
data: 123 cty: nj
変換ルール
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), [("cty", "city")], "province", )
結果
data: 123 cty: nj province: js
例6: 入力フィールドは、マッピングに使用されるテーブルの対応するフィールドとは異なります。 データをマップし、出力フィールドの名前を変更します。
生ログ
data: 123 cty: nj
変換ルール
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), [("cty", "city")], [("province", "pro")], )
結果
data: 123 cty: nj pro: js
例7: 複数のフィールドの値をテーブルの行にマッピングします。
生ログ
data: 123 city: nj pop: 800
変換ルール
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), ["city", "pop"], "province", )
結果
data: 123 city: nj pop: 800 province: js
例8: 複数のフィールドの値をテーブルの行にマッピングします。 入力フィールドは、マッピングに使用されるテーブル内の対応するフィールドとは異なります。
生ログ
data: 123 cty: nj pp: 800
変換ルール
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), [("cty", "city"), ("pp", "pop")], "province", )
結果
data: 123 cty: nj pp: 800 province: js
関連ドキュメント
この関数は、他の関数と一緒に使用できます。 詳細については、「e_table_map関数を使用したHTTPレスポンスステータスコードの強化」をご参照ください。
e_tablestore_map
e_tablestore_map関数は、Tablestoreのデータテーブルをディメンションテーブルとして使用して、生ログをエンリッチします。
構文
e_tablestore_map( fields, endpoint, ak_id, ak_secret, instance_name, table_names, output_fields=None, output_table_name=None, encoding="utf8", mode="fill-auto", )
パラメーター
パラメーター
タイプ
必須
説明
フィールド
文字列、数値、リスト、またはタプルリスト
必須
生ログとデータテーブルの間でデータをマップするために使用される生ログフィールド。 この関数は、複数の生ログフィールドをデータテーブルのプライマリキーに1つずつマッピングします。 例:
データテーブルにプライマリキーが含まれ、生ログにaフィールドが含まれている場合は、
fields="a"
を使用できます。データテーブルにa、b、cのプライマリキーが含まれ、生ログにa、b、cフィールドが含まれている場合は、
fields=["a", "b", "c"]
を使用できます。データテーブルにa、b、cのプライマリキーが含まれ、生ログにa1、b1、c1フィールドが含まれている場合は、
fields=[("a1", "a"), ("b1", "b"), ("c1", "c")]
を使用できます。
エンドポイント
String
必須
データテーブルが作成されるTablestoreインスタンスのエンドポイント。 詳細については、「エンドポイント」をご参照ください。
説明Tablestoreインスタンスの仮想プライベートクラウド (VPC) エンドポイントまたはパブリックエンドポイントを使用できます。 VPCエンドポイントは同じリージョン内のアクセスに使用され、パブリックエンドポイントはリージョンに関係なくインターネット経由のアクセスに使用されます。
ak_id
String
必須
Tablestoreインスタンスにアクセスする権限を持つアカウントのAccessKey ID。 詳細については、「AccessKey の作成」をご参照ください。
RAMユーザーを使用する場合は、RAMユーザーにAliyunOTSReadOnlyAccessなどのアクセス権限が付与されていることを確認してください。 詳細については、「RAMユーザーへの権限付与」をご参照ください。
ak_secret
String
必須
Tablestoreインスタンスにアクセスする権限を持つアカウントのAccessKeyシークレット。 詳細については、「AccessKey の作成」をご参照ください。
instance_name
String
必須
Tablestoreインスタンスの名前。
table_names
文字列、文字列リスト、またはタプルリスト
必須
データテーブルの名前。 データテーブルでセカンダリインデックスを使用する場合は、このパラメーターをインデックスの名前に設定します。 セカンダリインデックス機能の詳細については、「セカンダリインデックスの作成」をご参照ください。
たとえば、データテーブルに対してindex1セカンダリインデックスが作成されている場合、このパラメーターを
"index1"
に設定します。output_fields
List
選択可能
出力フィールド。 主キー列または属性列の名前を指定できます。 例:
["province", "pop"]
このパラメーターを設定しない場合、入力フィールドに基づいて一致する行のすべての列が返されます。説明Tablestoreインスタンスに複数のデータテーブルが作成されている場合、関数は最初に照合に使用されたデータテーブル内のデータのみを返します。
output_table_name
String
任意
返されたデータが格納されるデータテーブルの名前。 デフォルト値: なし。これは、出力フィールドにテーブル名が含まれていないことを示します。 このパラメーターを文字列に設定した場合、出力フィールドにはテーブル名が含まれます。
たとえば、testという名前のデータテーブルが使用され、変換ルールには
output_fields=["province", "pop"],output_table_name="table_name"
が含まれます。 テストデータテーブルのデータ列["province", "pop"]
が一致する場合、出力フィールドはprovince: xxx, pop:xxx,table_name:test
です。エンコード
String
任意
HTTPSリクエストパラメーターのエンコード方法。 デフォルト値: utf-8
モード
String
任意
フィールドの上書きモード。 デフォルト値: fill-auto。 詳細については、「フィールド抽出のチェックモードと上書きモード」をご参照ください。
レスポンス
新しいフィールドを含むログが返されます。
例
次の例は、次のtable_name_testデータテーブルに基づいています。
city (主キー)
pop (主キー)
cid
県
region
bj
300
1
bj
huabei
nj
800
2
js
huadong
sh
200
3
sh
huadong
例1: cityフィールドとpopフィールドに基づいてデータテーブルの行を検索し、その行のprovince列とcid列の値を返します。
生ログ
city:sh name:maki pop:200
変換ルール
e_tablestore_map( ["city","pop"], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", "table_name_test", output_fields=["province","cid"])
結果
city:sh name:maki pop:200 cid:3 province:sh
例2: rawログのcity1フィールドとpop1フィールドをデータテーブルのcityおよびpopプライマリキーにマッピングし、フィールドに基づいてデータテーブルの行を見つけ、その行のすべての列の値を返します。
生ログ
city1:sh name:maki pop1:200
変換ルール
e_tablestore_map( [("city1","city"), ("pop1", "pop")], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", "table_name_test")
結果
city:sh name:maki pop:200 cid:3 province:sh region:huadong
例3: cityフィールドとpopフィールドに基づいてデータテーブルの行を検索し、その行のすべての列の値を返します。 output_table_nameを
"table_name"
に設定します。 返された結果では、返されたデータが格納されているデータテーブルの名前を表示できます。生ログ
city:sh name:maki pop:200
変換ルール
e_tablestore_map( ["city","pop"], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", "table_name_test", output_table_name="table_name" )
結果
city:sh name:maki pop:200 cid:3 province:sh region:huadong table_name:table_name_test
例4: cityフィールドとpopフィールドに基づいて、table_name_test、table_name_test1、table_name_test2データテーブルで行を検索し、その行のすべての列の値を返します。 返された結果では、最初に照合に使用されたtable_name_testデータテーブルのデータのみを表示できます。
生ログ
city:sh name:maki pop:200
変換ルール
e_tablestore_map( ["city","pop"], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", ["table_name_test","table_name_test1","table_name_test2"], output_table_name="table_name" )
結果
city:sh name:maki pop:200 cid:3 province:sh region:huadong table_name:table_name_test
例5: index1セカンダリインデックスのpk1およびpk2プライマリキーに基づいてデータテーブル内の行を検索し、その行の定義済み列definedcol2の値を返します。 定義済みの列は、index1セカンダリインデックスに指定されます。
データテーブル (index1)
pk1 (主キー)
pk2 (主キー)
definedcol2 (定義済みの列)
definedcol3 (定義済みの列)
pk1_1
pk2_1
definedcol2_1
definedcol3_1
pk1_2
pk2_2
definedcol2_2
definedcol3_2
生ログ
pk1:pk1_1 pk2:pk2_1
変換ルール
e_tablestore_map( ["pk1","pk2"], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", "index1", output_fields= ["definedcol2"], output_table_name="table_name", )
結果
pk1:pk1_1 pk2:pk2_1 definedcol2:definedcol2_1 table_name:index1
e_redis_map
e_redis_map関数は、ApsaraDB for Redisのデータテーブルをディメンションテーブルとして使用して、生ログを強化します。
構文
e_redis_map(field, output_field, host, port=6379, db=0, username=None, password=None, encoding="utf-8", max_retries=5, mode="fill-auto")
パラメーター
パラメーター
タイプ
必須
説明
フィールド
String
必須
生ログとデータテーブルの間でデータをマップするために使用される生ログフィールド。 生ログにフィールドが含まれていない場合、ログに対する操作は実行されません。
output_field
String
必須
出力フィールド。
ホスト
String
必須
ApsaraDB for Redisデータベースのエンドポイント。
ユーザー名
String
任意
ApsaraDB for Redisデータベースへの接続に使用するアカウントのユーザー名。 このパラメーターはデフォルトでは空です。これは、認証が実行されないことを示します。
パスワード
String
任意
ApsaraDB for Redisデータベースへの接続に使用するアカウントのパスワード。 このパラメーターはデフォルトでは空です。これは、認証が実行されないことを示します。
ポート
Integer
選択可能
ApsaraDB for Redis データベースのポート デフォルト値は 6379 です。
db
Integer
選択可能
ApsaraDB for Redisデータベースの名前。 デフォルト値:0
エンコード
String
任意
ApsaraDB for Redisデータベース内のデータのエンコード方法。 デフォルト値: utf-8
max_retries
Integer
選択可能
ApsaraDB for Redisデータベースへの接続要求が失敗した場合に許可される再試行の最大数。 既定値:5
最大数の再試行後に接続要求が失敗した場合、関数は変換プロセスの現在のログをスキップします。 その後の変換は影響を受けません。
再試行間の各間隔は、前の間隔の2倍になる。 間隔の範囲は1秒から120秒です。
モード
String
任意
フィールドの上書きモード。 デフォルト値: fill-auto。 詳細については、「フィールド抽出のチェックモードと上書きモード」をご参照ください。
レスポンス
新しいフィールドを含むログが返されます。
例
次の例は、ApsaraDB for Redisの次のデータテーブルに基づいています。
重要string型の値のみがサポートされています。
キー
値
i1001
{"name": "オレンジ", "price": 10}
i1002
{"name": "Apple", "price": 12}
i1003
{"name": "Mango", "price": 16}
例1: itemフィールドに基づいてデータテーブルの値を検索し、値を返します。 ApsaraDB for Redisデータベースへの接続に使用されるアカウントのユーザー名とパスワードは、変換ルールで指定されていません。
生ログ
item: i1002 count: 7
変換ルール
e_redis_map("item", "detail", host="r-bp1olrdor8353v4s.redis.rds.aliyuncs.com")
結果
item: i1002 count: 7 detail: { "name": "Apple", "price": 12 }
例2: itemフィールドに基づいてデータテーブルの値を検索し、値を返します。 変換ルールでは、ApsaraDB for Redisデータベースへの接続に使用されるアカウントのユーザー名とパスワードが指定されています。
生ログ
item: i1003 count: 7
変換ルール
e_redis_map("item", "detail", host="r-bp1olrdor8353v4s****.redis.rds.aliyuncs.com", username="r-bp****", password="***")
結果
item: i1003 count: 7 detail:{ "name": "Mango", "price": 16 }