本文主要介绍数据加工(新版)输出配置。
数据集说明
数据加工(新版)任务中引用SPL规则中定义的数据集,将其写入特定的一个或多个目标,其中命名数据集通过其名称引用,未命名数据集则通过标识符__UNNAMED__
引用。日志服务SPL语法中数据集定义详情请参见SPL数据集。
示例
数据加工任务结果包含两个结果集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;
动态目标Project/Logstore输出
数据加工(新版)支持SPL规则动态指定加工结果输出的目标Project/Logstore,相关保留字段定义如下:
__tag__:__sls_etl_output_project__
字段表示动态输出目标Project__tag__:__sls_etl_output_logstore__
字段表示动态输出目标Logstore
示例
示例1:
指定加工结果的目标Project为字段
dst_project
对应的值。| extend "__tag__:__sls_etl_output_project__"=dst_project
示例2:
指定加工结果的目标Logstore为字符串拼接结果。
| extend "__tag__:__sls_etl_output_logstore__"=concat('log-', cast(status as VARCHAR))
指定HashKey输出
数据加工(新版)支持SPL规则动态指定Hash将加工结果路由输出至SLS Logstore的特定Shard,关于Hash Key路由写入Shard详情请参见PutLogs - 写入日志。
相关保留字段定义如下:
__tag__:__sls_etl_output_hash_key__
字段表示将加工结果写入目标Logstore时指定的Hash Key。
示例
指定字段field
进行MD5计算后的结果作为写入目标Logstore的Hash Key。
| extend "__tag__:__sls_etl_output_hash_key__"=to_hex(md5(to_utf8(field))