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