Sql 在具有多个一对多关系的tableau中创建向下钻取和向上钻取

Sql 在具有多个一对多关系的tableau中创建向下钻取和向上钻取,sql,join,charts,visualization,tableau-api,Sql,Join,Charts,Visualization,Tableau Api,我有3个数据集,结构如下: 我想要完成的 我想要两张状态和风险的饼图,一张工资/任期的散点图。当我点击工资/任期散点图时,我希望饼图从总计切换到按我的选择过滤。我让它工作。 问题是,当我点击一个饼图总计时,让我们说“状态=准时”,其他饼图不会过滤。在本例中,只有琼斯和霍恩斯基具有“准时”状态,因此另一个风险饼图应该删除史密斯,但它没有 饼图仅在我单击散点图时过滤(数据总和不正确)。 这非常有效,但我需要删除姓氏的详细级别。我怀疑您只是将这三个表合并在一起。以下是你最终得到的(我将向琼斯展

我有3个数据集,结构如下:




我想要完成的 我想要两张状态和风险的饼图,一张工资/任期的散点图。当我点击工资/任期散点图时,我希望饼图从总计切换到按我的选择过滤。我让它工作。
问题是,当我点击一个饼图总计时,让我们说“状态=准时”,其他饼图不会过滤。在本例中,只有琼斯和霍恩斯基具有“准时”状态,因此另一个风险饼图应该删除史密斯,但它没有

饼图仅在我单击散点图时过滤(数据总和不正确)。


这非常有效,但我需要删除姓氏的详细级别。

我怀疑您只是将这三个表合并在一起。以下是你最终得到的(我将向琼斯展示):

问题是您正在处理已经聚合的表数据,而不是原始的未聚合数据。这使得表很难直观地连接,并且使得Tableau的数据聚合和过滤工作非常具有挑战性。您可以看到,连接这些表会导致大量重复

这种重复是状态饼图中奇数计数的来源:

SELECT Status,
       SUM(CountS)
FROM [The joined tables]
WHERE last_name = 'Jones' -- Filtering by Jones
GROUP BY Status;
SELECT Risk,
       SUM(CountR)
FROM [The joined tables]
WHERE last_name = 'Jones' -- Filtering by Jones
AND Status = 'On Time' -- Filtering by On Time, by clicking the pie slice
GROUP BY Risk;
收益率:

+---------+--------+
| Status  | CountS |
+---------+--------+
| On Time | 12     |
| Late    | 0      |
| Missing | 3      |
+---------+--------+
+--------+--------+
| Risk   | CountR |
+--------+--------+
| High   | 2      |
| Low    | 1      |
| Medium | 4      |
+--------+--------+
所有原始数字都乘以3,因为每行重复了两次

此外,让我们按“准时”(单击饼图部分)进行筛选,并查看风险饼图的变化情况:

SELECT Status,
       SUM(CountS)
FROM [The joined tables]
WHERE last_name = 'Jones' -- Filtering by Jones
GROUP BY Status;
SELECT Risk,
       SUM(CountR)
FROM [The joined tables]
WHERE last_name = 'Jones' -- Filtering by Jones
AND Status = 'On Time' -- Filtering by On Time, by clicking the pie slice
GROUP BY Risk;
收益率:

+---------+--------+
| Status  | CountS |
+---------+--------+
| On Time | 12     |
| Late    | 0      |
| Missing | 3      |
+---------+--------+
+--------+--------+
| Risk   | CountR |
+--------+--------+
| High   | 2      |
| Low    | 1      |
| Medium | 4      |
+--------+--------+
这种重复又给我们带来了麻烦


如果你能得到这些数据的一个原始的、未汇总的版本,Tableau会处理得更好,你可以用它做更多的事情。否则,您将不得不对如何设置过滤器和聚合进行创造性(坦率地说是愚蠢的),您将发现整个仪表板最终将成为一个又一个丑陋的黑客。祝你好运,伙计。

我怀疑你只是把这三张桌子连在一起。以下是你最终得到的(我将向琼斯展示):

问题是您正在处理已经聚合的表数据,而不是原始的未聚合数据。这使得表很难直观地连接,并且使得Tableau的数据聚合和过滤工作非常具有挑战性。您可以看到,连接这些表会导致大量重复

这种重复是状态饼图中奇数计数的来源:

SELECT Status,
       SUM(CountS)
FROM [The joined tables]
WHERE last_name = 'Jones' -- Filtering by Jones
GROUP BY Status;
SELECT Risk,
       SUM(CountR)
FROM [The joined tables]
WHERE last_name = 'Jones' -- Filtering by Jones
AND Status = 'On Time' -- Filtering by On Time, by clicking the pie slice
GROUP BY Risk;
收益率:

+---------+--------+
| Status  | CountS |
+---------+--------+
| On Time | 12     |
| Late    | 0      |
| Missing | 3      |
+---------+--------+
+--------+--------+
| Risk   | CountR |
+--------+--------+
| High   | 2      |
| Low    | 1      |
| Medium | 4      |
+--------+--------+
所有原始数字都乘以3,因为每行重复了两次

此外,让我们按“准时”(单击饼图部分)进行筛选,并查看风险饼图的变化情况:

SELECT Status,
       SUM(CountS)
FROM [The joined tables]
WHERE last_name = 'Jones' -- Filtering by Jones
GROUP BY Status;
SELECT Risk,
       SUM(CountR)
FROM [The joined tables]
WHERE last_name = 'Jones' -- Filtering by Jones
AND Status = 'On Time' -- Filtering by On Time, by clicking the pie slice
GROUP BY Risk;
收益率:

+---------+--------+
| Status  | CountS |
+---------+--------+
| On Time | 12     |
| Late    | 0      |
| Missing | 3      |
+---------+--------+
+--------+--------+
| Risk   | CountR |
+--------+--------+
| High   | 2      |
| Low    | 1      |
| Medium | 4      |
+--------+--------+
这种重复又给我们带来了麻烦


如果你能得到这些数据的一个原始的、未汇总的版本,Tableau会处理得更好,你可以用它做更多的事情。否则,您将不得不对如何设置过滤器和聚合进行创造性(坦率地说是愚蠢的),您将发现整个仪表板最终将成为一个又一个丑陋的黑客。祝你好运,老兄。

我把这个标记为离题,因为这不是一个编程问题。另外,sql和join标记的原因还不清楚。sql和join标记的原因是因为我在这3个数据集之间使用了两个左连接,我想知道是否存在错误空间。你建议张贴在哪里?这里有一个关于提问的表格。软件中有一个非常真实的编程元素。如果Excel和类似软件是一个可行的主题,那么Tableau也应该如此。@barker您的编辑只会在数据和仪表板中隐藏问题。我建议在你尝试分析之前先了解一下。否则,您的所有结果都将是错误的,或者被压缩到您期望的标准化数据的结果中。我会的,但在阅读了下面的答案和评论之后,@AndrewLaPrise似乎给了您一些很好的建议。如果你想要一个更全面的答案,我想问一个关于Tableau标准化/推荐数据的新问题。Tableau不喜欢吃不相交的摘要数据。该链接中的数字1、3和5直接适用于您正在做的事情。我将此标记为离题,因为这不是一个编程问题。另外,sql和join标记的原因还不清楚。sql和join标记的原因是因为我在这3个数据集之间使用了两个左连接,我想知道是否存在错误空间。你建议张贴在哪里?这里有一个关于提问的表格。软件中有一个非常真实的编程元素。如果Excel和类似软件是一个可行的主题,那么Tableau也应该如此。@barker您的编辑只会在数据和仪表板中隐藏问题。我建议在你尝试分析之前先了解一下。否则,您的所有结果都将是错误的,或者被压缩到您期望的标准化数据的结果中。我会的,但在阅读了下面的答案和评论之后,@AndrewLaPrise似乎给了您一些很好的建议。如果你想要一个更全面的答案,我想问一个关于Tableau标准化/推荐数据的新问题。Tableau不喜欢吃不相交的摘要数据。链接中的数字1、3和5直接适用于您正在做的事情。非常感谢您的帮助,安德鲁,这正是我的问题。我可以得到原始数据。。。我的连接是否相同?我认为如果没有我所做的聚合,连接仍然会复制数据。它仍然包含1对多关系。您的联接可能本质上是相同的。我希望您最终会得到一个状态表,其中每个日期都有一行,状态字段为
Status
。所以一行可能看起来像:
|Jones | 18/09/2015 | Late |
|Jones | 19/09/201