データ変換では、ログデータを処理するために、基本データ型、イベント型、固定識別子、JSON オブジェクトなど、いくつかのデータ構造を使用します。
基本的なデータ構造
次の表に、基本的なデータ構造の型を示します。
|
型 |
説明 |
|
整数 |
フィールド値を設定したり、関数にパラメーターを渡したりします。 例: |
|
浮動小数点数 |
フィールド値を設定したり、関数にパラメーターを渡したりします。 例: |
|
文字列 |
文字列は、次の規則をサポートしています。
説明
検索値はダブルクォーテーションマーク ("") で囲む必要があります。外側の文字列をシングルクォーテーションマーク ('') で囲み、内側の検索値をダブルクォーテーションマーク ("") で囲むことができます。たとえば、 |
|
バイト |
文字列のメモリエンコーディングとは異なります。 |
|
空値 |
説明
空の文字列は、None や null とはデータ型が異なります。 |
|
リスト |
|
|
タプル |
リストと同様に機能します。 例: |
|
辞書 (Dict) |
|
|
ブール値 (Bool) |
たとえば、 |
|
テーブル |
複数列のテーブル構造です。テーブルは、外部リソースから複数行の CSV コンテンツを読み込んだり、ApsaraDB RDS または Logstore から複数列のデータを取得したりして構築します。テーブルは、主にデータエンリッチメントのマッピングやその他の高度な設定シナリオで使用されます。 |
|
datetime オブジェクト |
メモリ内の日付と時刻を表します。UNIX タイムスタンプ文字列またはフォーマットされた時刻文字列に変換したり、さらなる変換のために |
イベント型
データ変換は、次のイベント型をサポートしています。
-
プリミティブ型
データ変換は、
{"__topic__": "access_log", "content": "....."}のように、ログデータを辞書として処理します。辞書のキーと値は、ログのフィールドと値に対応します。
説明イベントのキーと値はどちらも文字列であり、キーは一意である必要があります。
-
メタフィールド
メタフィールドには次のものが含まれます。
-
時刻フィールド
__time__:ログが書き込まれたときの UNIX タイムスタンプ (1970年1月1日 00:00:00 UTC からの秒数) です。整数の文字列として保存されています。 -
トピック
__topic__:Logstore 内のログをトピック別に整理します。ログの書き込みまたはクエリ時にトピックを指定できます。 -
ソース
__source__:ログを生成したマシンの IP アドレスなど、ログのソースです。
-
-
時刻フィールドの変更
時刻フィールドの値を変更して、イベント時刻を変更します。このフィールドに対する他の操作には、datetime 関数を使用することもできます。
説明時刻フィールドが削除された場合、システムはログを宛先に送信する際に処理時刻をイベント時刻として使用します。
-
タグ
タグは分類に使用されるログのラベルで、
__tag__:nameの形式です。-
ソース Logstore でパブリック IP アドレスの記録が有効になっている場合、ログには
tag:__tag__:__receive_time__タグが含まれます。 -
コンテナサービスのログには、
__tag__:__container_name__のような、コンテナ関連の複数のタグが含まれています。 -
タグを追加または変更できます。type というタグを追加するには、
e_set("__tag__:type", "access_log")を使用します。
-
-
代入時の自動変換
イベントのキーと値は文字列です。値を割り当てるか、新しいフィールドを設定すると、キーと値は自動的に文字列に変換されます。例:
e_set("v1", 12.3) e_set("v2", True)これにより、
v1は文字列 "12.3" に、v2は文字列 "true" に設定されます。次の表は、さまざまなデータ型がどのように文字列に変換されるかを示しています。
型
例
変換後の型
変換後の例
整数
1文字列
"1"浮動小数点数
1.2文字列
"1.2"ブール値
True文字列
"true"バイト
b"123"UTF-8 を使用して文字列にデコード
"123"タプル
-
例 1:
(1, 2, 3) -
例 2:
("a", 1)
リストの文字列
-
例 1:
"[1, 2, 3]" -
例 2:
"[\"a\", 1]"
リスト
-
例 1:
[1,2,3] -
例 2:
["a", 1]
文字列
-
例 1:
"[1, 2, 3]" -
例 2:
"[\"a\", 1]"
辞書
{"1":2, "3":4}文字列
"{\"1\": 2, \"3\": 4}"Datetime
datetime(2018, 10, 10, 10, 10, 10)ISO 形式の文字列
2018-10-10 10:10:10 -
固定識別子
データ変換は、コードを簡素化し、可読性を向上させるための固定識別子を提供します。
|
識別子 |
型 |
説明 |
|
true |
ブール値 |
|
|
false |
ブール値 |
|
|
null |
None |
|
|
F_TAGS |
文字列 |
|
|
F_META |
文字列 |
|
|
F_TIME |
文字列 |
|
|
F_PACK_META |
文字列 |
|
|
F_RECEIVE_TIME |
文字列 |
サーバーログ受信時刻の |
|
C_JOB_REGION |
文字列 |
データ変換タスクのリージョン ID です (例: |
|
C_JOB_PROJECT |
文字列 |
データ変換タスクのプロジェクト名です (例: |
|
C_JOB_NAME |
文字列 |
データ変換ジョブ設定名です (例: |
|
C_JOB_ID |
文字列 |
データ変換タスクの実行 ID です (例: |
JSON オブジェクト
JSON オブジェクトは、json_select または json_parse を使用して文字列から解析されます。これは基本的なデータ構造で構成されています。次の表は、入力文字列がどのように JSON オブジェクトに変換されるかを示しています。
|
文字列 |
JSON オブジェクト |
実際の型 |
|
|
|
整数 |
|
|
|
浮動小数点数 |
|
|
|
ブール値 |
|
|
|
ブール値 |
|
|
|
文字列 |
|
|
|
None |
|
|
|
リスト |
|
|
|
リスト |
|
|
|
辞書 |
|
|
|
辞書 |