Phase 1 Table模式

概述

Phase 1 Table 模式提供对 UModel 各类数据集的直接访问能力,允许用户通过统一的SPL语法直接查询底层数据,同时自动处理存储路由、字段映射等复杂操作。

核心特点

  • 直接数据访问:直接访问数据集(DataSet),返回可执行的SPL查询。

  • 完全控制权:用户可以完全控制查询逻辑和数据处理流程。

  • 存储透明:自动处理不同存储类型的差异(MetricStore、LogStore等)。

  • 字段映射:自动应用数据集定义中的字段映射规则。

适用场景

  • 需要对查询逻辑进行精确控制。

  • 不需要实体关系的高级抽象。

  • 高性能要求的数据访问。

  • 特殊的数据处理和分析需求。

应用案例

当前应用案例相关素材,请参考:umodel.zip

前提条件

Phase 1 Table 模式需要确保以下前提条件:

  1. DataSet 已经创建。

  2. DataSet 已经关联了任意一个存储。

  3. 存储中存在相关的数据。

MetricSet查询

MetricSet 查询支持两种数据源类型:指标数据(metrics) 和 标签值(labels),支持 PromQL 和 SPL 两种查询模式。

获取指标数据 (metrics)

功能说明

查询 MetricSet 中的指标数据,支持时间范围查询、即时查询和数据聚合。

SPL语法

.metric_set with(
    domain='域名', 
    name='数据集名称', 
    source='metrics', 
    metric='指标名', 
    [其他可选参数]
)

参数说明

参数名

类型

必填

说明

示例值

domain

string

MetricSet所属域

‘apm’

name

string

MetricSet名称

‘apm.metric.apm.operation’

source

string

固定为’metrics’

‘metrics’

metric

string

要查询的指标名称

‘request_count’

query_type

string

查询类型:‘range’(默认)或’instant’

‘range’

step

string

时间步长,不填写时使用自动的步长

‘1m’, ‘5m’

aggregate

boolean

是否聚合

true/false

aggregate_labels

array

聚合维度列表

[‘host’, ‘service’]

query

string

过滤条件,请参考 SPL 表达式语法

service_id = "xxx" and status =~ "400|500"

storage_domain

string

指定存储域名

‘apm’

storage_name

string

指定存储名称

‘metricstore-apm’

storage_kind

string

指定存储类型

‘sls_metricstore’

示例

  • 查询 api_request_duration 指标,不做聚合直接返回所有指标,Step使用Auto模式。

.metric_set with(
    domain='rum', 
    name='rum.metric.api', 
    source='metrics', 
    metric='api_request_duration',
    aggregate=false
)
  • 查询 request_count 指标,并聚合 service 和 operation 维度,过滤条件为 service_id = “hwx28v3j7p@9949e3dbf79e9a082105c”,查询步长为1分钟。

.metric_set with(
    domain='apm', 
    name='apm.metric.apm.operation', 
    source='metrics', 
    metric='request_count',
    query_type='range',
    step='1m',
    aggregate=true,
    aggregate_labels=['service', 'operation'],
    query='service_id = "hwx28v3j7p@9949e3dbf79e9a082105c"'
)
  • 查询 error_rate 指标,进行统一聚合,并调用异常检测 SPL 进一步分析。

.metric_set with(
    domain='apm',
    name='apm.metric.apm.service',
    source='metrics',
    metric='error_rate',
    step='1m',
    aggregate='true'
  )
| extend slice_index = find_first_index(__ts__, x -> x > 1756904640000000000)
| extend len = cardinality(__ts__)
| extend ret = series_cnn_anomalies(__value__)
| extend anomalies_score_series = ret.anomalies_score_series, anomalies_type_series = ret.anomalies_type_series, error_msg = ret.error_msg
| project __labels__, __name__, __ts__, __value__, anomalies_score_series, anomalies_type_series, error_msg,len,slice_index
| extend __ts__ = slice(__ts__, slice_index, len - slice_index), __value__ = slice(__value__, slice_index, len - slice_index), anomalies_score_series = slice(anomalies_score_series, slice_index, len - slice_index), anomalies_type_series = slice(anomalies_type_series, slice_index, len - slice_index)
| extend anomay_cnt = CARDINALITY(FILTER(anomalies_score_series, x -> x > 0.5)), anomaly_sorce = array_sum(FILTER(anomalies_score_series, x -> x > 0.5))
| extend sort_score = anomaly_sorce / cast(anomay_cnt as double) 
| sort sort_score desc , anomay_cnt desc

获取标签值 (labels)

功能说明

查询 MetricSet 中某个标签的所有可能值,用于动态构建查询条件或提供选择选项。

SPL语法

.metric_set with(
    domain='域名', 
    name='数据集名称', 
    source='labels', 
    label='标签名', 
    [其他可选参数]
)

参数说明

参数名

类型

必填

说明

示例值

domain

string

MetricSet所属域

‘apm’

name

string

MetricSet名称

‘apm.metric.apm.operation’

source

string

固定为’labels’

‘labels’

label

string

要查询的标签名称,空字符串表示所有标签

‘rpc’

query

string

过滤条件,请参考 SPL 表达式语法

‘service_id = “xxx”’

storage_domain

string

指定存储域名

‘apm’

storage_kind

string

指定存储类型

‘sls_metricstore’

storage_name

string

指定存储名称

‘metricstore-apm’

示例

  • 查询 rpc 标签的所有可能值,过滤条件为 service_id = “hwx28v3j7p@9949e3dbf79e9a082105c”

.metric_set with(
    domain='apm', 
    name='apm.metric.apm.operation', 
    source='labels', 
    label='rpc',
    query='service_id = "hwx28v3j7p@9949e3dbf79e9a082105c"'
)

LogSet查询

功能说明

查询LogSet中的日志数据,支持全文检索、字段过滤和结构化查询。

SPL语法

.log_set with(
    domain='域名', 
    name='数据集名称', 
    [其他可选参数]
)

参数说明

参数名

类型

必填

说明

示例值

domain

string

LogSet所属域

‘apm’

name

string

LogSet名称

‘apm.log.app’

query

string

过滤条件,请参考 SPL 表达式语法

‘level = “ERROR”’

storage_domain

string

指定存储域名

‘apm’

storage_kind

string

指定存储类型

‘sls_logstore’

storage_name

string

指定存储名称

‘logstore-apm’

查询示例

  • 查询 level = “ERROR” 和 service = “order-service” 的日志。

.log_set with(
    domain='apm', 
    name='apm.log.app',
    query='level = "ERROR" and service = "order-service"'
)

TraceSet查询

功能说明

查询 TraceSet 中的分布式追踪数据,支持链路分析、Span 检索和性能分析。

SPL语法

.trace_set with(
    domain='域名', 
    name='数据集名称', 
    [其他可选参数]
)

参数说明

参数名

类型

必填

说明

示例值

domain

string

TraceSet所属域

‘apm’

name

string

TraceSet名称

‘apm.trace.span’

query

string

过滤条件,请参考 SPL 表达式语法

‘service = “order-service” and duration > 1000’

storage_domain

string

指定存储域名

‘apm’

storage_name

string

指定存储名称

‘trace-apm’

storage_kind

string

指定存储类型

‘sls_logstore’

查询示例

  • 查询 service = “order-service” 和 duration > 1000 的追踪。

.trace_set with(
    domain='apm', 
    name='apm.trace.span',
    query='service = "order-service" and duration > 1000'
)

EventSet查询

功能说明

查询 EventSet 中的事件数据,支持告警事件、状态变更事件和业务事件的检索。

SPL语法

.event_set with(
    domain='域名', 
    name='数据集名称', 
    [其他可选参数]
)

参数说明

参数名

类型

必填

说明

示例值

domain

string

EventSet所属域

‘apm’

name

string

EventSet名称

‘apm.event.alert’

query

string

过滤条件,请参考 SPL 表达式语法

‘severity = “P1” and status = “firing”’

storage_domain

string

指定存储域名

‘apm’

storage_name

string

指定存储名称

‘event-common’

storage_kind

string

指定存储类型

‘sls_logstore’

查询示例

  • 查询 severity = “P1” 和 status = “firing” 的事件。

.event_set with(
    domain='apm', 
    name='apm.event.alert',
    query='severity = "P1" and status = "firing"'
)

ProfileSet查询

功能说明

查询 ProfileSet 中的性能剖析数据,支持 CPU 剖析、内存剖析和自定义性能数据分析。

SPL语法

.profile_set with(
    domain='域名', 
    name='数据集名称', 
    [其他可选参数]
)

参数说明

参数名

类型

必填

说明

示例值

domain

string

ProfileSet所属域

‘apm’

name

string

ProfileSet名称

‘apm.profile.cpu’

query

string

过滤条件,请参考 SPL 表达式语法

‘service_id = “xxx” and profile_type = “cpu”’

storage_domain

string

指定存储域名

‘apm’

storage_name

string

指定存储名称

‘profilestore-apm’

storage_kind

string

指定存储类型

‘sls_logstore’

查询示例

  • 查询 service_id = “order-service” 和 profile_type = “cpu” 的性能剖析数据。

.profile_set with(
    domain='apm', 
    name='apm.profile.cpu',
    query='service_id = "order-service" and profile_type = "cpu"'
)

通用特性

存储自动路由

Phase 1 Table 模式会自动根据 UModel 定义进行存储路由:

  1. 存储类型识别:自动识别 MetricStore、LogStore 等存储类型。

  2. 连接参数:自动获取 region、project 等连接参数。

  3. 查询转换:将 UModel 查询转换为对应存储的查询语法。

字段映射机制

系统会自动应用DataLinkStorageLink中定义的字段映射:

# 示例:字段映射配置fields_mapping:'service_id': 'acs_arms_service_id'  # UModel字段 -> 存储字段'operation': 'rpc''region': 'acs_arms_region_id'

查询优化

  • 索引利用:自动利用存储的索引特性优化查询。

  • 并发控制:支持高并发查询请求。

  • 结果缓存:缓存常用查询结果,提升响应速度。

错误处理

  • 参数校验:严格校验输入参数的合法性。

  • 存储异常:优雅处理存储连接和查询异常。

  • 格式验证:验证返回数据格式的正确性。