このトピックでは、データ変換構文に関連するデータ構造について説明します。
基本的なデータ構造
次の表に、さまざまなタイプの基本データ構造を示します。
データ型 | 説明 |
Integer | フィールド値として整数を使用できます。 整数をパラメーターの値として関数に渡すこともできます。 たとえば、 |
浮く | フィールド値としてfloat値を使用できます。 float値をパラメーターの値として関数に渡すこともできます。 例えば、 |
String | 文字列は複数の形式で指定できます。 例:
説明 フィールド値は二重引用符 ("") で囲む必要があります。 一重引用符 ('') を使用して文字列を囲み、二重引用符 (" ") を使用してフィールド値を囲むことができます。 たとえば、 |
Byte | 例: |
なし |
説明 なしまたはnullは空の文字列とは異なります。 |
List | 配列。 例: [1,2,3,4] 。
|
Tuple | タプルとリストは同じように機能します。 例: |
辞書 | ディクショナリは、
|
Boolean | 例: |
テーブル | 各テーブルは複数の列で構成されています。 外部リソースから複数行のCSV形式のデータを読み込むことで、テーブルを作成できます。 ApsaraDB RDSインスタンスとLogstoreから複数の列のデータをロードしてテーブルを構築することもできます。 テーブルは、データマッピングやエンリッチメントなどの高度な操作に適しています。 |
Datetime object | datetimeオブジェクトは、日付および時刻情報を示すメモリオブジェクトである。 UNIX タイムスタンプまたはフォーマットされた時間文字列に変換できます。 datetimeオブジェクトは、さらに変換するために |
イベントタイプ
次のリストは、イベントタイプを示しています。
基本タイプ
ログデータは、データ変換プロセス中に辞書構造に処理されます。 例:
{"__topic__": "access_log", "content": "....."}
辞書のキーと値は、ログのフィールドと値に対応します。
説明イベントのキーと値は文字列であり、キーは一意である必要があります。
メタフィールド
次のメタフィールドがサポートされています。
__time__
: ログデータの書き込み時に指定されたログ時間。 値は整数を表す文字列で、UNIXの時間形式に従います。 1970年1月1日木曜日00:00:00から経過した秒数です。__topic__
: ログのトピック。 トピックは、Logstoreでログをグループ化するために使用されます。 ログがLogstoreに書き込まれるときに、ログのトピックを指定できます。 ログを照会するときにトピックを指定できます。__source__
: ログのソース。 例えば、このフィールドの値は、ログが生成されるサーバのIPアドレスとすることができる。
__time__フィールドの変更
__time__ フィールドの値を変更すると、ログのイベント時間を変更できます。 日付と時刻の関数を使用して、__time__ フィールドでより多くの操作を実行できます。
説明__time__フィールドが削除された場合、ログが処理されたシステム時刻が、ログが宛先ログストアに書き込まれるイベント時刻として使用されます。
タグ
タグは、ログのフィールドを区別するために使用されます。 タグは
__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文字列に設定します。次の表に、さまざまなデータ型を文字列に変換する例を示します。
オリジナルタイプ
例
新しいタイプ
例
Integer
1
String
"1"
浮く
1.2
String
「1.2」
Boolean
真
String
「真」
Byte
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]
String
例1:
"[1, 2, 3]"
例2:
"[\" a\", 1]"
辞書
{"1":2, "3":4}
String
"{\" 1\": 2, \" 3\": 4}"
Datetime
datetime(2018, 10, 10, 10, 10, 10)
ISO 形式で時間を表す文字列
2018-10-10 10:10
固定識別子
データ変換機能は、固定識別子を提供する。 識別子を使用してコードを単純化できます。
ID | データ型 | 説明 |
true | Boolean |
|
false | Boolean |
|
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_プロジェクト | String | データ変換ジョブが属するプロジェクトの名前。 例: |
C_JOB_NAME | String | データ変換ジョブの構成名。 例: |
C_JOB_ID | String | データ変換ジョブの実行ID。 例: |
JSON オブジェクト
JSONオブジェクトは、JSON式関数json_select
またはjson_parse
を使用してデータを解析した後に取得するオブジェクトです。 JSONオブジェクトは、基本的なデータ構造のデータで構成されます。 次の表に、文字列のJSONオブジェクトへの変換例を示します。
文字列 | JSONオブジェクト | データ型 |
|
| Integer |
|
| 浮く |
|
| Boolean |
|
| Boolean |
|
| String |
|
| なし |
|
| List |
|
| List |
|
| 辞書 |
|
| 辞書 |