使用锁定参数嵌入 Metabase 仪表板时出错

Error embedding Metabase dashboard with locked parameters

我正在 Metabase 上创建仪表板以将其嵌入到应用程序中。此仪表板有两个问题,一个是使用元数据库查询构建器 (AOV) 创建的,另一个是使用 SQL (GMV) 创建的。当我在问题上设置 brand_id 参数时,我收到一条错误消息,指出在 运行 查询时发生错误,但对于 AOV 问题一切正常。你能帮帮我吗?

我得到的错误是:

缺少 ID: {…} 的 值:对象{值:(60)[…],human_readable_values:{},field_id:1241} 的 : 对象 { ... }

GMV查询如下:

SELECT sum("public"."crm_store_sales"."total") AS "sum" 来自 "public"."crm_store_sales"

为真 [[和{{ brand_id }}]] [[AND {{ 数据}}]]

我在 AWS EKS 上使用 Metabase 0.31.2,使用内部 Postgres 数据库并查询另一个 Postgres 数据库。

我在 Windows 10.

通过 Firefox 64 访问 Metabase

我们找到了答案:我们所做的是使用本机 SQL 创建查询并将变量添加到 SQL 列表。这样,当问题嵌入锁定变量时,可以向其传递多个值。

这是一个例子:

SELECT sum("public"."my_column"."total") AS "sum"
FROM "public"."my_table"

WHERE TRUE
[[AND field1_id in ({{ field1_id }})]]
[[AND {{date}}]]

在这个例子中,我们创建了两个变量:field1_iddate。如果我们嵌入这个问题并锁定 field1_id 参数,我们仍然可以将多个值传递给它,因为它在一个列表中。例如,您可以像这样将:1,2,3,4 传递给此字段:

"params": {
   "field1_id": "1,2,3,4" 
}

请注意元素之间不能有间距。

我相信元数据库在幕后会做这样的事情:WHERE TRUE AND field1_id IN (1,2,3,4)