SuperAPI AI 工具集

cap-de-programmatic-filters

数据与分析

查看项目

更新于 10-16 05:52

技能介绍

用途:控制每位查看者在嵌入式 Domo 仪表板或卡片中看到的数据,由服务端程序化过滤器与数据集切换实现,Domo 侧强制执行,终端用户无法绕过;客户端过滤见 cap-de-jsapi-filters。

流程:代理用户(服务账号)代替所有查看者操作。服务端先用 OAuth 客户端凭证获取访问令牌,再请求带查看者专属过滤器的嵌入令牌,返回给客户端后 POST 到 iframe。

前置条件:Domo API 客户端(CLIENT_ID 与 CLIENT_SECRET,来自 developer.domo.com > My Account > New Client);嵌入 ID(来自嵌入对话框的 5 位 ID,非页面 URL);用于过滤的数据集列名或 ID。所有认证必须服务端进行,凭证不得暴露到客户端。

令牌流程:第一步获取访问令牌,POST https://api.domo.com/oauth/token?grant_type=client_credentials&scope=data%20audit%20user%20dashboard,Authorization: Basic base64(CLIENT_ID:CLIENT_SECRET)。第二步请求嵌入令牌,仪表板用 POST https://api.domo.com/v1/stories/embed/auth,卡片用 POST https://api.domo.com/v1/cards/embed/auth;载荷含 sessionLength(分钟,1440=24 小时)、authorizations(token 为嵌入 ID、permissions 含 READ/FILTER/EXPORT、filters、policies、sqlFilters、datasetRedirects)。第三步渲染,用隐藏 POST 表单提交到 iframe(仪表板 https://public.domo.com/embed/pages/{embed_id},卡片 https://public.domo.com/cards/{embed_id}),避免令牌出现在 URL 或浏览器历史中。

过滤器:标准过滤器含必填 column、operator、values,可选 datasourceId;运算符包括 IN、NOT_IN、EQUALS、NOT_EQUALS、GREATER_THAN、GREATER_THAN_EQUALS_TO、LESS_THAN、LESS_THAN_EQUALS_TO。复杂逻辑用 sqlFilters(与 filters 同级),支持 SQL WHERE 语法,列名用反引号、字符串用单引号、数字不加引号,支持 IN、NOT IN、BETWEEN、LIKE、AND、OR、IS NULL、IS NOT NULL。标准与 SQL 过滤器可共存,先标准后 SQL 收窄。

数据集切换:在授权对象中传 datasetRedirects(原数据集 UUID 到目标数据集 UUID),目标数据集模式须与原数据集一致(列名与类型相同),先重定向再执行过滤器。

常见模式:按用户过滤(数据库中存用户到过滤器映射,嵌入时查询)、按角色过滤、按租户切换数据集。

注意事项:JWT 约 8KB 上限,长值列表需聚合列、用 SQL 过滤器或按 datasourceId 拆分;列名精确匹配大小写;缓存访问令牌并在过期前刷新,嵌入令牌每请求生成;空 filters 数组表示无过滤;values 必须是数组,数字用数字类型;运算符名称精确;切勿客户端生成令牌,服务端验证嵌入 ID 授权与过滤值,使用最小权限。更多 API 端点见 references/api-endpoints.md。