Tableau - 通过具有多个值的单元格进行过滤

时间:2018-03-29 02:08:56

标签: tableau

所以我有如下数据。如果我将状态示例添加为具有以下数据的过滤器,我将只有3个选项可供选择。相反,我正在尝试创建一个只列出所有可用选项的过滤器。

快速编辑:是的我已经考虑使用参数,但是我需要过滤器选择哪些参数不提供。

State
NY
PA
FL
SC
NC
WV
TX
CA

ID | State
1  | PA, NY, FL, SC
2  | CA, WV, PA, NY
3  | NC, SC, TX, FL, NY

第二次编辑:

我没有能力重塑这些数据,因为我需要过滤每列可能的选项数量,(75+至少两个)。这就是我问这个问题的原因。我希望可能有类似于SSRS的解决方案,我可以使用查询B填充我的过滤器,并使用结果过滤回查询A.

3 个答案:

答案 0 :(得分:1)

重塑您的数据。单元格中没有重复列表。

在您的示例中,重塑一个数据行,描述状态与ID的每个关联。你应该有13行,每行有一个ID和一个状态。

然后分析将更加直截了当。无论工具如何。您可以阅读有关数据建模,数据库方案设计的更多信息。您的数据违反了第一范式。尽可能尝试达到至少第二范式

答案 1 :(得分:1)

万一有人发现这个问题,但仍在寻找解决方案!

我也有类似的需求。用例是一个唯一的员工列表,其记录每个都包括他们一年中访问过的所有城市的单个链接区域。 (对于访问的每个城市,基础数据都正确地编有不同的记录,但是客户希望有一个特别适合他们的显示视图。)

所以客户想要一个看起来像这样的表:

EMPLOYEE    CITIES VISITED
Person A    London
Person B    London,Paris
Person C    Geneva
Person D    Geneva,London,Milan

对于客户来说,找到访问过伦敦的所有人的最简单方法是添加通配符搜索过滤器。他们一输入伦敦,就会出现相应的“访问的城市”记录供他们选择。但是,客户希望使用带有可单击的预设城市的过滤器选项(而不是徒手输入城市名称,因为他们不想猜测所有选项是什么,否则可能会出现拼写错误)。

事实证明,使用参数控件执行此操作非常容易,这要归功于Tableau社区论坛(https://community.tableau.com/thread/210796)中的Dave Rawlings!我不是Dave协助的职位的OP,但我很高兴找到它。

1)为过滤器创建唯一选项列表:我删除了基础数据中的重复项,以生成访问过的城市的唯一列表。 (此处的OP仅使用状态列表或状态缩写。)

2)创建一个参数以创建过滤器选项: -在工作表的左下方,创建一个新参数。我称我为“城市”。 -类型为字符串,值选项来自列表。 -将您的唯一选项一一添加到列表中。我还包括一个名为“全部”的选项。 -将“当前值”设置为“全部”。

3)创建一个计算字段以调节参数。我将其命名为“ CityFilter”,并使用此公式将“全部”或所选城市设置为“是”。

If [Cities]="All" THEN "Yes"
ELSEIF FIND([CitiesVisited],[Cities])> 0 THEN "Yes" ELSE "No" END

此处,“城市”是指用户从参数列表中选择的城市,“城市已访问”是指记录中具有多个/逗号分隔值的串联字段。

4)从计算所得的字段中创建一个过滤器:将该字段拖动到要添加到您的过滤器中:将所需的值设置为“是”。

5)将参数显示为工作表过滤器:右键单击参数为“显示参数”。这会将其添加到工作表右侧的过滤器列表中。

6)将参数显示为仪表板过滤器:在仪表板的其中一个视图的右上角,选择“向下”箭头,然后选择“参数”。选择您创建的参数,也将其添加到破折号的过滤器列表中。

提醒,到目前为止,参数仅是单选,因此客户端一次只能过滤到一个城市! Tableau正在开发的多选动态参数着重于跨多个数据源的参数,而不是针对一个字段内的多个值。这是因为从理论上讲这是不好的数据记录。但是,如果像这样的例子可以帮助客户理解和利用数据,我很乐意为您服务。

我希望这能回答OP或任何其他可以为项目使用快速解决方案的人的原始问题!

答案 2 :(得分:0)

我不确定您的数据库设计。通常在数据库中会有一个表格,它将单独包含所有值,这些值将用于您所拥有的情况。

我可以想到一种方式可能有点粗糙但可行。

如果您有权访问数据库,请将state列放在单独的Excel工作表中。

使用text to columns为所有值创建单独的列,然后将这些列转换为单列。

现在在使用原始数据库的tableau中,然后使用完全连接加入这两者,这将创建一整套所有数据。

现在使用Excel工作表中的列创建一个过滤器。

希望这会有所帮助,但请确保在加入2个数据库时通过QA进行操作