データ変換タスク (新バージョン) が生成するデータセットの出力先を設定します。これには、プロジェクトまたは Logstore への動的ルーティングや、シャードレベルのハッシュキー割り当てが含まれます。
データセットの概要
データ変換タスク (新バージョン) は、SPL ルールで定義されたデータセットを参照し、それらを 1 つ以上の出力先に書き込みます。名前付きデータセットは名前で参照し、名前なしデータセットは識別子 __UNNAMED__ を使用します。Simple Log Service SPL 構文におけるデータセット定義の詳細については、「General Reference」をご参照ください。
例
この例では、データ変換タスクは 2 つのデータセット valid と __UNNAMED__ を生成します。
-- 名前なしデータセット __UNNAMED__ を出力
*
| where mode is null;
-- 名前付きデータセット src を定義 (出力しない)
.let src = *
| where mode is not null;
-- データセット valid を定義 (出力しない)
.let valid = $src
| where mode = 'a'
| parse-regexp content, '(\S+)\s+(\S+)\s+(\S+)' as x, y, z
| project x, y, z;
-- 名前付きデータセット valid を出力
$valid;
-- 名前なしデータセット __UNNAMED__ を出力
$src
| where mode = 'b'
| parse-csv content as u, v
| project u, v;
プロジェクトまたは Logstore への動적出力
SPL ルールを使用して、出力を特定のプロジェクトまたは Logstore に動的にルーティングできます。動的ルーティングは、以下の予約済みフィールドで制御します。
|
予約済みフィールド |
説明 |
|
|
動的出力の送信先プロジェクトを指定します。 |
|
|
動的出力の送信先 Logstore を指定します。 警告
送信先 Logstore を現在のソース Logstore (同一ソース設定) に設定しないでください。設定した場合、ログの書き込みがループし、追加のストレージコストおよびトラフィックコストが発生する可能性があります。これにより発生したリソースの消費と費用は、お客様の負担となります。 |
例
-
例 1: データ変換結果の送信先プロジェクトを、
dst_projectフィールドの値として指定します。| extend "__tag__:__sls_etl_output_project__"=dst_project -
例 2: データ変換結果の送信先 Logstore を、連結文字列として指定します。
| extend "__tag__:__sls_etl_output_logstore__"=concat('log-', cast(status as VARCHAR))
出力のハッシュキー指定
SPL ルールを使用してハッシュキーを指定し、データ変換結果を Logstore 内の特定のシャードにルーティングできます。ハッシュキーを使用したシャードルーティングの詳細については、「Write Logs」をご参照ください。
__tag__:__sls_etl_output_hash_key__: 出力を送信先 Logstore 内の特定のシャードにルーティングするために使用するハッシュキー。
例:ハッシュ範囲の制限 (本番環境で推奨)
本番環境では、下流の固定数のコンシュームパーティション (256 や 1,024 など) に対応するため、ハッシュ値を切り詰めて固定サフィックスでパディングし、ハッシュキーを特定の範囲に収束させることを推奨します。
シナリオ: 256個の固定シャードアンカーポイントへの収束
MD5 ハッシュの先頭 2 文字を抽出し、その後に 30 個のゼロを連結します。これにより、データ量に関係なく常に 256 の固定ハッシュ境界にデータが書き込まれます。これにより、データ変換における集計処理が容易になり、データ処理効率が向上します。
| extend "__tag__:__sls_etl_output_hash_key__" = concat(substring(to_hex(md5(to_utf8(field))), 1, 2), '000000000000000000000000000000')