如何在Tableau CustomSQL中注入(动态?)参数

时间:2017-06-14 09:28:27

标签: tableau

我目前尝试在Tableau中解决以下问题: 最后,我希望有一个Tableau仪表板,用户可以在其中选择一个客户,然后可以看到客户的KPI。到目前为止没什么了不起的。

要获取客户的KPI,有一个带有参数“CustomerName”的CustomSQL查询(返回该客户的KPI)。

现在的事情: 我不想拥有一个硬编码的CustomerNames列表,因为Tableau Parameters可以实现。相反,应该从另一个数据源获取CustomerNames。我没有找到一种方法将参数“链接”到DataSource,和/或将静态参数以外的东西注入到CustomSQL中。 我的问题:对此真的没有解决方案,或者我只是做错了什么(我希望如此)。

我发现这里的解决方法https://www.interworks.com/de/blog/daustin/2015/12/17/dynamic-parameters-tableau似乎有效,但看起来像......一种解决方法。

几乎没有背景信息: 我必须坚持使用CustomSQL,因为

  • 对于我来说,计算所有客户名称的所有KPI是 然后按Tableau过滤,因为数据量太大。
  • 使用Tableau Calculations替换CustomSQL 是不可行的 和过滤器(已经尝试过,最终导致Tableau拉动 太多的数据,而不是将工作推送到数据库)。

我无法相信Tableau在这里没有提供解决方案,因为我相信用例非常普遍。

你有什么意见吗?

提前感谢您的帮助!

亲切的问候

1 个答案:

答案 0 :(得分:0)

您是否尝试将rawsql()函数与数据库端的存储函数一起使用?我发现当需要从数据集中加载完全与当前使用的数据源无关的单个值时,它非常有用。 例如,运行foo存储函数,该函数接受2个日期和计算的事物总和,语法应该是这样的:

rawsql_int(your_db_schema.foo(%1,%2),[startDateFieldTableau],[endDateFieldTableau])

但您可以直接访问它:

rawsql_int("select sum(bar) from sales")

但这有点风险。

缺点:

  • 它依赖于当前连接(您创建一个计算字段(duh!)
  • 它不适用于提取(但你正在使用自定义sql所以我相信你更多的是实时连接