mcpField
F
filterql-builder

filterql-builder

github.com/lytics数据与数据库449 次安装3 周前更新
代码仓库

关于 filterql-builder

filterql-builder 将结构化条件转换为有效的 FilterQL 表达式。该技能无需 API,可依据字段类型和 AND/OR/NOT 分组规则构建筛选条件。

主要功能

  1. 01按字段类型映射运算符
  2. 02组合 AND/OR/NOT 条件
  3. 03生成描述性别名 slug
  4. 04转义带引号的值
  5. 05指出不兼容的运算符

适用场景

  1. 01将受众条件转换为 FilterQL
  2. 02为目标表构建分组筛选条件
  3. 03修正无效表达式或运算符

MCP 相关

输入未说明 MCP 连接或相关行为。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/lytics/agent-skills --skill filterql-builder

安装后在 Claude Code 中输入/filterql-builder确认已加载。

详细介绍

FilterQL 构建器

用途

将结构化条件转换为有效的 FilterQL 语法。接收包含 AND/OR 分组的字段/运算符/值元组,并生成语法正确的 FilterQL 字符串。

环境

  • 无需配置(纯构建,不调用 API)

输入

  • 条件:由(字段、运算符、值)元组组成的列表
  • 分组:AND/OR/NOT 组合
  • 表:目标表(默认值:user)
  • 别名:片段 slug 名称

行为

第 1 步:将每个条件映射为 FilterQL 语法

对于每个条件,请使用 ../references/field-types.md 中的类型与运算符兼容性矩阵:

字段类型自然语言FilterQL
string等于 "X"field = "X"
string不等于 "X"field != "X"
string包含 "X"field CONTAINS "X"
string匹配模式field LIKE "pattern*"
stringA、B、C 中的一个field IN ("A", "B", "C")
bool为 truefield = true
bool为 falsefield = false
int/number大于 Nfield > N
int/number大于或等于 Nfield >= N
int/number小于 Nfield < N
date晚于 N 天前field > "now-Nd"
date早于 N 天前field < "now-Nd"
date过去 N 小时内field > "now-Nh"
[]string(集合)有 "X"field INTERSECTS ("X")
[]string(集合)没有 "X"field NOT INTERSECTS ("X")
任意有任意值EXISTS field
任意为空NOT EXISTS field
第 2 步:组合条件

使用 AND/OR/NOT 包装条件:

FILTER AND (
  condition1,
  condition2,
  OR (condition3, condition4)
) FROM table ALIAS slug_name

规则:

  • 单个条件:FILTER condition FROM table ALIAS slug
  • 多个条件默认使用 AND
  • NOT 可以包装任意单个条件或分组
  • AND/OR 分组必须使用括号
  • 分组内的条件以逗号分隔
第 3 步:生成 Slug 名称

将别名转换为有效的 slug:

  • 转为小写
  • 将空格替换为下划线
  • 移除特殊字符
  • 保持描述清晰且简洁
第 4 步:输出

返回完整的 FilterQL 字符串:

FILTER AND (country = "US", visitct > 5) FROM user ALIAS us_active_visitors

日期计算参考

周期语法示例
小时"now-Nh""now-24h" = 1 天前
天"now-Nd""now-30d" = 30 天前
周"now-Nw""now-4w" = 4 周前
月"now-NM""now-6M" = 6 个月前
年"now-Ny""now-1y" = 1 年前

常见换算:

  • 1 年 = "now-1y" 或 "now-8760h" 或 "now-365d"
  • 90 天 = "now-90d" 或 "now-2160h"
  • 1 周 = "now-1w" 或 "now-7d" 或 "now-168h"

错误处理

  • 如果字段类型与请求的运算符不兼容,请建议正确的运算符
  • 如果值包含引号,请对其进行转义
  • 如果 FilterQL 语法无效,请找出并修复问题

依赖项

  • 参考资料:../references/filterql-grammar.md、../references/field-types.md

评论

支持 Markdown