【问题标题】:How to run sql based on filter condition in Tableau report如何在 Tableau 报表中根据筛选条件运行 sql
【发布时间】:2020-02-16 09:40:57
【问题描述】:

我在 Sql server 中有这个数据输出,用于我在 tableau 中使用提取数据提取到的表:-

要求是当用户在 tableau 仪表板中选择筛选条件下的 source_nbr 和 stock_date 时,应该触发一个 sql 查询,该查询应该从 tableau 中提取的数据中提取自定义结果并将其显示在 tableau 仪表板上。

将根据用户选择触发的查询是:-

select top 1 with ties
   source_nbr,
   source_cc,
   stock_date,
   item_nbr,
   fin_rpt_grp_code,
   base_div_code,
   dept_nbr,
   item_desc,
   item_upc
from dbo.inventory_stock_status
WHERE source_nbr = <UserSelectedsource_nbr> and stock_date < <userSelectedDate> 
order by row_number() over (partition by item_nbr order by stock_date desc);

这就是我的过滤列在表格工作簿中的样子:-

简而言之,当用户在 tableau 仪表板右侧选择源 nbr 和 stock 数据时,上面的 SQL 应该在后台运行提取的数据并将输出数据显示给用户。

希望我把我的问题说清楚了。

【问题讨论】:

  • 如果您了解 Tableau 的核心功能如何工作并允许 Tableau 根据需要生成 SQL,而不是尝试自己对 SQL 进行微观管理,那么您将获得更好的 Tableau 体验。这类似于尝试更改编译器生成的汇编代码——在极少数情况下很有用,但通常是一种低效的工作方式

标签: sql-server tableau-api


【解决方案1】:

您可以按如下方式使用 cte:

with table1 as
(
select
   source_nbr,
   source_cc,
   stock_date,
   item_nbr,
   fin_rpt_grp_code,
   base_div_code,
   dept_nbr,
   item_desc,
   item_upc,
   row_number() over (partition by item_nbr order by stock_date desc) as rn
from dbo.inventory_stock_status
WHERE source_nbr = <UserSelectedsource_nbr> and stock_date < <userSelectedDate>
)
select
   source_nbr,
   source_cc,
   stock_date,
   item_nbr,
   fin_rpt_grp_code,
   base_div_code,
   dept_nbr,
   item_desc,
   item_upc
from table1
order by rn

【讨论】:

  • @MarkKram 感谢您的指出。拼写检查确实有惊喜。
  • Teehee,这发生在我们最好的人身上。如果不是拼写检查和谷歌,我会遇到真正的麻烦! ???
  • @NeerajAgarwal 我将如何将用户选择的日期和 sourceNbr 填充到 sql 查询中?我需要在 tableau 中哪里配置?
  • @Neer1009 这些条件在 WHERE 子句中。
  • @NeerajAgarwal 可能我没有完全理解答案。我的问题是如何将 tableau 工作簿中用户选择的数据映射到 sql 查询,以便它可以使用用户提供的输入运行查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-12
  • 1970-01-01
  • 2016-05-10
  • 2017-12-09
  • 2023-02-17
  • 1970-01-01
相关资源
最近更新 更多