定时SQL功能用于定时分析数据、存储聚合数据、投影与过滤数据。日志服务支持源MetricStore中的数据通过定时SQL处理后存储到目标MetricStore中。
前提条件
- 已采集数据到源MetricStore。具体操作,请参见接入时序数据。 
- 已创建目标MetricStore。具体操作,请参见创建MetricStore。 
操作步骤
目前,定时SQL功能在公测阶段,暂未计费。公测结束后,将收取SQL独享版计算资源消耗费用。费用说明请参见按使用功能计费模式计费项。
- 登录日志服务控制台。 
- 在Project列表区域,单击目标Project。  
- 在页签中,单击目标MetricStore。  
- 执行查询和分析操作。 - 在页面右上角,单击15分钟(相对),设置查询和分析的时间范围。 
- 直接输入PromQL语句,单击立即执行。 - 具体操作,请参见查询和分析时序数据。 
 说明- 本步骤为定时SQL任务的预览操作,用于验证您所使用的查询和分析语句是否正确,执行结果是否有数据。 
- 选择。  
- 创建定时SQL任务。 - 在计算配置向导中,完成如下配置,然后单击下一步。 - 参数 - 描述 - 任务名称 - SLS任务的唯一名称。 - 显示名称 - 定时SQL任务的显示名称。 - 任务描述 - 定时SQL任务的描述。 - 资源池 - 日志服务提供增强型资源池用于数据分析。 - 增强型资源池复用SQL独享版的计算能力,提供足够的分析并发数,与您在控制台上的SQL分析操作进行资源隔离。增强型资源池根据SQL分析操作所消耗的CPU时间收取费用。更多信息,请参见高性能完全精确查询与分析(SQL独享版)。 - 写入模式 - 选择时序库导入时序库,即表示源MetricStore中的数据通过定时SQL处理后将存储到目标MetricStore中。 - SQL代码 - 显示您在步骤4中输入的查询和分析语句。此处的预览操作与步骤4中的操作一致,用于验证您所使用的查询和分析语句是否正确,执行结果是否有数据。 - SQL任务运行时,日志服务将执行该查询和分析语句分析数据。 重要- 导入MetricStore的推荐行为是每次导入当前时间点的指标值,因此推荐使用promql_query函数。如果使用promql_query_range函数,会导致大量数据膨胀。 - SQL配置 - 结果指标名 - 如果您要修改您所分析的指标名,您可以输入修改后的指标名。更多信息,请参见时序数据(Metric)。 重要- 建议分析的对象为单个指标时,修改指标名,实现重命名。 - 如果分析对象为多个指标,则修改指标名后,会将所有的指标名修改为同一个相同的指标名。 - Rehash - 打开Rehash开关后,您可以配置哈希列,用于将同一Label值的数据写入到一个Shard中,增强数据局部性,提升查询效率。 - 哈希列的取值取决于时序数据已有的Label信息。例如时序数据已有的Label信息为 - {"alert_id":"alert-1608815762-545495","alert_name":"告警恢复关闭","status":"inactive"},则哈希列的可选值为alert_id、alert_name、status。如果您配置哈希列为status,则status字段值相同的数据将被写入到同一个Shard中。- 附加Labels - 添加静态标签,键值对形式,可用于标识指标的相关属性。 - 例如配置label_key为app,配置label_value为ingress-nginx。 - 目标 - 目标Region - 目标Project所在地域。 - 目标Project - 用于存储SQL分析结果的目标Project名称。 - 目标库 - 用于存储SQL分析结果的目标MetricStore名称。 - 写目标授权 - 您可以通过如下方式授予定时SQL任务写数据到目标MetricStore的权限。 - 默认角色:授权定时SQL任务使用阿里云系统角色AliyunLogETLRole将运行结果写入目标MetricStore。 重要- 仅在首次配置时需要操作,且需要由目标Project所属的阿里云账号完成。 
- 自定义角色:授权定时SQL任务使用自定义角色将运行结果写入目标MetricStore。 - 您需先授予自定义角色写数据到目标MetricStore的权限,然后在角色ARN中输入您自定义角色的ARN。具体操作,请参见授予自定义RAM角色写目标Logstore的权限。 
 - 执行SQL授权 - 您可以通过如下方式授予定时SQL任务读取源MetricStore数据以及在当前Project下执行SQL分析操作的权限。 - 默认角色:授权定时SQL任务使用阿里云系统角色AliyunLogETLRole执行对应操作。 重要- 仅在首次配置时需要操作,且需要由目标Project所属的阿里云账号完成。 
- 自定义角色:授权定时SQL任务使用自定义角色执行对应操作。 - 您需先授予自定义角色相关权限,然后在角色ARN中输入您自定义角色的ARN。具体操作,请参见授予自定义RAM角色分析源Logstore的权限。 
 
- 在调度配置向导中,完成如下配置,然后单击确定。 - 参数 - 描述 - 调度间隔 - 调度定时SQL任务的频率,每调度一次定时SQL任务产生一个执行实例。调度间隔决定每个执行实例的调度时间。 - 固定间隔:按照固定间隔调度定时SQL任务。 
- Cron:通过Cron表达式指定时间间隔,按照指定的时间间隔调度定时SQL任务。 - Cron表达式的最小精度为分钟,24小时制。例如 - 0 0/1 * * *表示从00:00开始,每隔1小时运行一次。- 当您需要配置时区时,需选择Cron模式。常见的时区列表请参见时区列表。 
 - 调度时间范围 - 调度的时间范围,具体说明如下: - 某时间开始:指定第一个实例被调度的开始时间。 
- 特定时间范围:指定实例被调度的起止时间,即定时SQL任务仅在该时间范围内可被执行。 
 说明- 实例的调度时间必须在该范围内,超出该范围时,定时SQL任务不再产生新实例。 
- 调度时间范围是指 - __time__。更多详情请参见保留字段。
 - SQL时间窗口 - 定时SQL任务运行时,仅分析该时间范围内的日志。时间窗口与实例调度时间共同作用生效。该时间范围不能大于调度间隔的5倍且不能超过1天。更多信息,请参见时间表达式语法。 - 例如,调度间隔为固定间隔10分钟,起始时间为2021-04-01 00:00:00,延迟执行为30秒,SQL时间窗口为[@m-10m,@m),则SQL任务运行时,在00:00:30时刻生成第一个执行实例,分析的是 - [23:50:00~00:00:00)期间的日志。更多信息,请参见调度与执行场景。说明- SQL时间窗口是指 - __time__,更多详情请参见保留字段。
- 如果未在SQL代码中定义 - __time__,则写入目标MetricStore日志时间- __time__会默认使用调度时的窗口开始时间。
 - SQL超时 - 执行SQL分析操作失败时自动重试的阈值。当重试时间超过指定的最大时间或者重试次数超过最大次数时,该执行实例结束,状态为失败。您可以根据失败原因,手动重试该实例。具体操作,请参见重试定时SQL任务实例。 - 延迟执行 - 调度时间点往后延迟执行的时间。取整范围:0~120,单位:秒。 - 当数据写入MetricStore存在延迟等情况时,可通过延迟执行来保证数据的完整性。 - 创建定时SQL任务后,您可以到目标MetricStore中查看SQL执行结果数据。