参考手册
标签操作
设置、复制、移动、过滤或转换结果标签。
选择器匹配器用来选择输入序列。这里的标签函数用于转换或过滤表达式结果,因此可以放在函数和聚合之后。
from metricraft import QueryBuilder as Q
query = Q.from_metric("up").label_replace("host", "$1", "instance", "([^:]+):.*")
print(query.build(mode="promql"))
映射 API 接受显式的两个字符串组成的元组。替换值使用 $1 等后端捕获引用,不进行 Python 插值。仅限 MetricsQL 的操作会单独标记。
方法与参数
QueryBuilder
alias()将输出指标名替换为字面量名称。仅限 MetricsQL
drop_common_labels()删除所有输入序列中值相同的公共标签。仅限 MetricsQL
keep_metric_names()在适用的 MetricsQL 函数或二元表达式中保留指标名。仅限 MetricsQL
label_copy()按标签对的顺序把源标签复制到目标标签,跳过缺失源标签。仅限 MetricsQL
label_del()删除指定输出标签。仅限 MetricsQL
label_graphite_group()从已有指标名按点分隔的部分中,按从零开始的索引选取并组合新指标名。仅限 MetricsQL
label_join()按分隔符连接源标签值,将结果写入目标标签。
QueryBuilder.label_join(destination: StringInput, separator: StringInput, *sources: StringInput) -> QueryBuilder
| 参数 / 类型 | 含义与可接受的值 |
|---|---|
destinationstr必填 | 不含控制字符的非空标签名。方言要求时,构建器会为名称加引号。 |
separatorstr必填 | 源标签值之间的字面量分隔符,可以为空。 |
*sourcesstr, ...可变参数 | 按给定顺序连接的源标签名。 |
返回值 QueryBuilder:共享未变化原生子树的新不可变表达式。接收表达式不变,不查询数据。
label_keep()仅保留指定输出标签。仅限 MetricsQL
label_lowercase()将指定标签值转换为小写。仅限 MetricsQL
label_map()按有序的源值与目标值对,精确映射标签值。仅限 MetricsQL
仅限 MetricsQL
QueryBuilder.label_map(label: StringInput, *pairs: Tuple[str, str]) -> QueryBuilder
| 参数 / 类型 | 含义与可接受的值 |
|---|---|
labelstr必填 | 不含控制字符的非空标签名。方言要求时,构建器会为名称加引号。 |
*pairstuple[str, str], ...可变参数 | 按顺序分别传入由两个字符串组成的映射元组。label_copy/move 使用源与目标标签名,label_map 使用源与目标标签值。 |
返回值 QueryBuilder:共享未变化原生子树的新不可变表达式。接收表达式不变,不查询数据。
label_match()保留指定标签符合后端完整匹配正则的序列。仅限 MetricsQL
label_mismatch()保留指定标签不符合后端完整匹配正则的序列。仅限 MetricsQL
label_move()按标签对的顺序把源标签移动到目标标签,并删除源标签。仅限 MetricsQL
label_replace()用正则匹配一个源标签,将展开后的替换值写入目标标签。
QueryBuilder.label_replace(destination: StringInput, replacement: StringInput, source: StringInput, regex: StringInput) -> QueryBuilder
| 参数 / 类型 | 含义与可接受的值 |
|---|---|
destinationstr必填 | 不含控制字符的非空标签名。方言要求时,构建器会为名称加引号。 |
replacementstr必填 | 替换文本,可包含 '$1' 等后端捕获引用,编码为字符串字面量。 |
sourcestr必填 | 不含控制字符的非空标签名。方言要求时,构建器会为名称加引号。 |
regexstr必填 | 后端 RE2 模式。替换中的捕获引用使用 $1 或命名捕获;查询引用不会把正则变成普通字面量。 |
返回值 QueryBuilder:共享未变化原生子树的新不可变表达式。接收表达式不变,不查询数据。
示例
from metricraft import QueryBuilder as Q
Q.from_metric("up").label_replace("host", "$1", "instance", "([^:]+):.*").build(mode="promql")label_set()设置字面量输出标签值,不改变输入表达式。仅限 MetricsQL
label_transform()使用捕获展开,替换标签值中的每一个正则匹配。仅限 MetricsQL
仅限 MetricsQL
QueryBuilder.label_transform(label: StringInput, regex: StringInput, replacement: StringInput) -> QueryBuilder
| 参数 / 类型 | 含义与可接受的值 |
|---|---|
labelstr必填 | 不含控制字符的非空标签名。方言要求时,构建器会为名称加引号。 |
regexstr必填 | 后端 RE2 模式。替换中的捕获引用使用 $1 或命名捕获;查询引用不会把正则变成普通字面量。 |
replacementstr必填 | 替换文本,可包含 '$1' 等后端捕获引用,编码为字符串字面量。 |
返回值 QueryBuilder:共享未变化原生子树的新不可变表达式。接收表达式不变,不查询数据。
label_uppercase()将指定标签值转换为大写。仅限 MetricsQL
label_value()将数值标签的值用作样本值;无法解析的值不产生样本。仅限 MetricsQL
labels_equal()保留所选标签值全部相等的序列。仅限 MetricsQL
仅限 MetricsQL
QueryBuilder.labels_equal(first: StringInput, second: StringInput, *others: StringInput) -> QueryBuilder
| 参数 / 类型 | 含义与可接受的值 |
|---|---|
firststr必填 | 不含控制字符的非空标签名。方言要求时,构建器会为名称加引号。 |
secondstr必填 | 不含控制字符的非空标签名。方言要求时,构建器会为名称加引号。 |
*othersQueryBuilder, ...可变参数 | 额外输入表达式。多个聚合输入和 union 类转换仅限 MetricsQL;普通 PromQL 聚合只接收当前表达式。 |
返回值 QueryBuilder:共享未变化原生子树的新不可变表达式。接收表达式不变,不查询数据。