加工结果输出配置

本文主要介绍数据加工(新版)输出配置。

数据集说明

数据加工(新版)任务中引用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计算后的结果作为写入目标LogstoreHash Key。

| extend "__tag__:__sls_etl_output_hash_key__"=to_hex(md5(to_utf8(field))