Filter 如何在快速筛选中对组合的多个选择进行Tableau运行查询,附示例

Filter 如何在快速筛选中对组合的多个选择进行Tableau运行查询,附示例,filter,tableau-api,Filter,Tableau Api,很难用主题来描述我的问题。这里有一个例子 我希望Tableau运行查询以仅显示包含我在Product A quick filter中选择的两个产品的帐户ID。在本例中,只有第二个帐户ID符合条件。这可能吗 提前谢谢你的帮助 嗯,问得好。这是不可能的方式,你想要的(至少我想不出一种方法来做到这一点),与快速过滤器 我可以解决您的特定问题(筛选历史上至少有2种特定产品的客户),但扩展变量n产品确实很麻烦 首先,创建两个参数。产品1和产品2。每个都是一个字符串,您可以从[Product a]字段获取

很难用主题来描述我的问题。这里有一个例子

我希望Tableau运行查询以仅显示包含我在Product A quick filter中选择的两个产品的帐户ID。在本例中,只有第二个帐户ID符合条件。这可能吗


提前谢谢你的帮助

嗯,问得好。这是不可能的方式,你想要的(至少我想不出一种方法来做到这一点),与快速过滤器

我可以解决您的特定问题(筛选历史上至少有2种特定产品的客户),但扩展变量n产品确实很麻烦

首先,创建两个参数。产品1和产品2。每个都是一个字符串,您可以从[Product a]字段获取列表。您将使用这2个参数指定所需的2种产品

现在创建一个计算字段,[产品标志]:

IF [Product A] = [Product1] OR [Product A] = [Product2]
THEN 1
END
现在将[Account ID]拖动到过滤器工具架。打开过滤器选项并转到条件。现在选择按字段[Product flag],总和=2

如果在同一个[帐户ID]下没有重复的[产品A],这将起作用。如果这可以实现,您需要一种更复杂的方法。[产品标志]变为:

IF [Product A] = [Product1]
THEN 1
ELSEIF [Product A] = [Product2]
THEN 2
END
条件应该是Count(Distinct)=2

在这两种情况下,它将只保留包含您在其下选择的两种产品的帐户ID。他们可以拥有其他产品

编辑:对于N产品问题,我相信您将使用表外的解决方案。一种可能性是使用JSAPI,这样您就可以在JS接口中选择所需的产品,并将参数传递给Tableau

在JS中,您可以有一个列表,可以选择任意多个项目,以及一个脚本,用于根据选择将参数传递给Tableau。可能是:产品1、产品2、产品3

然后,您可以使用CONTAINS()查看该产品是否在该列表中(并升起一个标志),并计算“,”以查看选择了多少产品


不幸的是,我对JS API的了解非常有限,但我强烈建议您看看真正有趣的问题。在列表中列出引用每种产品的客户比在列表中列出引用任何产品的客户要复杂得多

如果您愿意从一个不太方便的用户界面开始(适用于临时分析,但不适用于发布的仪表盘),请尝试以下操作:

根据帐户Id创建筛选器,在“常规”选项卡上选择“全部使用”,并在“条件”选项卡上选择“按公式使用”。输入公式
计数(如果[产品A]=“业务办公室整合”则为1端)>0和计数(如果[产品A]=“有线条形码扫描仪”则为1端)>0

这将只筛选为只包括引用这两种产品的帐户ID。您可以将其扩展到任意数量的所需产品的列表。对于关系数据源,它是使用HAVING子句实现的

当然,手动修改此公式可能会很繁琐,但这是实现分析目标的一种方法,了解过滤条件的工作原理也会很有帮助。类似的公式适用于许多情况

您可以使用相同的方法创建一个或多个动态集,然后在计算字段、表格中的任何工具架中使用它们,并将它们组合起来创建新的集。为方便起见,还可以将公式移动到计算字段

注意,公式中的1不重要,任何非空值都有效。由于没有else子句,因此对于未通过if测试的行,公式的计算结果为null。函数的作用是:计算表达式中非空值的行数


要想找到一种无需编辑公式即可从列表中轻松选择产品的方法,可能需要结合一些更高级的功能。我现在没有答案,但值得学习的功能可能是,也可能不是解决方案的一部分,包括过滤操作、上下文过滤器、顶级过滤器、计数不同、自定义SQL、计算集、表计算、LOD表达式和Javascript API。这也是一个很好的问题,可以在支持菜单下的Tableau在线论坛上提出,并提供一个示例工作簿。

谢谢!是的,您的方法应该适用于这个特定的示例,但不幸的是,我将扩展N个产品,N可以大到30个…我将继续搜索解决方案,如果我发现了什么,我将回到这里并发布它。再次感谢!:)添加一个附加项。我相信单凭画面是无法解决问题的。但是您可以使用JSAPI来解决这个问题。看看啊,可惜我一点也不懂Java:(谢谢!我已经联系了Tableau技术支持,现在正在等待解决方案。如果他们有创意,我会更新。Javascript与Java无关。但我想你也不知道:)。如果有什么好的事情发生,请随时通知我们。我从表中得到了一个明确的答案,这在表中是无法做到的。他们会发送一个特性请求来考虑把它作为一个新的特征添加。