在Tableau中过滤后计算LAG变量

时间:2017-10-30 16:04:55

标签: tableau

我有一个包含4列的数据集:ID(用户的唯一标识符),年份,国家和级别,格式为:

+----+------+---------+-------+
| ID | Year | Country | Level |
+----+------+---------+-------+
|  1 | 2015 | USA     |     1 |
|  1 | 2016 | China   |     2 |
|  2 | 2015 | China   |     2 |
|  2 | 2016 | Russia  |     2 |
|  3 | 2015 | Russia  |     1 |
|  3 | 2016 | China   |     2 |
|  4 | 2015 | USA     |     2 |
|  4 | 2016 | USA     |     3 |
|  5 | 2014 | China   |     1 |
|  5 | 2016 | USA     |     2 |
|  6 | 2015 | USA     |     1 |
|  6 | 2016 | USA     |     2 |
|  7 | 2015 | Russia  |     2 |
|  7 | 2016 | China   |     3 |
+----+------+---------+-------+

用户将能够按国家/地区过滤数据集。

我想使用国家/地区过滤器创建一个表格,如果用户是在由级别变量汇总选定的任何国家/地区中的前一年,则该列表显示在列中,除了仅受当前国家/地区过滤器影响的其他变量。

例如,如果我选择中国和美国:

+----+------+---------+-------+-----------------+
| ID | Year | Country | Level | In selection PY |
+----+------+---------+-------+-----------------+
|  1 | 2015 | USA     |     1 | No              |
|  1 | 2016 | China   |     2 | Yes             |
|  2 | 2015 | China   |     2 | No              |
|  3 | 2016 | China   |     2 | No              |
|  4 | 2015 | USA     |     2 | No              |
|  4 | 2016 | USA     |     3 | Yes             |
|  5 | 2014 | China   |     1 | No              |
|  5 | 2016 | USA     |     2 | No              |
|  6 | 2015 | USA     |     1 | No              |
|  6 | 2016 | USA     |     2 | Yes             |
|  7 | 2016 | China   |     3 | No              |
+----+------+---------+-------+-----------------+

汇总结果将是:

+-------+-------------------+-----------------+
| Level | Number of records | In selection PY |
+-------+-------------------+-----------------+
|     1 |                 3 |               0 |
|     2 |                 6 |               2 |
|     3 |                 2 |               1 |
+-------+-------------------+-----------------+

您知道有效计算此聚合表的方法吗? (这将在具有数百万行的数据集中完成,并且可以选择一组可变的国家/地区)

1 个答案:

答案 0 :(得分:1)

我找到了一个解决方案,会发布以防其他人有用:

我将国家/地区过滤器更改为"添加到上下文" 并创建此变量:

In Selection PY: if Year = 2016 then
{fixed [ID]:min(if Year = 2015 then 1 END)}
elseif Year = 2015 then
{fixed [ID]:min(if Year = 2014 then 1 END)}
elseif Year = 2014 then
{fixed [ID]:min(if Year = 2013 then 1 END)}

通过这种方式,变量Selection PY是根据国家过滤器动态计算的。

只需要事先知道哪些年份存储在数据集中(或者添加更多年份才能安全)。