Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tableau api 在表中过滤后计算滞后变量_Tableau Api - Fatal编程技术网

Tableau api 在表中过滤后计算滞后变量

Tableau api 在表中过滤后计算滞后变量,tableau-api,Tableau Api,我有一个数据集,有4列:ID(用户的唯一标识符)、年份、国家和级别,格式如下: +----+------+---------+-------+ | ID | Year | Country | Level | +----+------+---------+-------+ | 1 | 2015 | USA | 1 | | 1 | 2016 | China | 2 | | 2 | 2015 | China | 2 | | 2 | 2016 | Russ

我有一个数据集,有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 |
+----+------+---------+-------+
用户将能够按国家筛选数据集

我想使用country filter创建一个表,该表在一列中显示用户是否是通过级别变量聚合而选择的任何国家的上一年,除了仅受当前country filter影响的其他变量之外

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

+----+------+---------+-------+-----------------+
| 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 |
+-------+-------------------+-----------------+

您知道如何有效地计算此聚合表吗?(这将在一个有数百万行的数据集中完成,并选择一组可变的国家)

我找到了一个解决方案,如果它对其他人有帮助,将发布:

我将国家/地区筛选器更改为“添加到上下文”,并创建了此变量:

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)}
这样,变量选择PY将根据国家/地区过滤器动态计算


只需提前知道数据集中存储了哪些年(或添加更多年以确保安全)

最后一级聚合可能很难显示。一个选项是预处理数据,以便[在选择中PY]是数据源中的一个实际字段。问题是在选择中PY取决于应用的过滤器(例如,如果用户过滤某些国家,在选择中PY需要检查ID是否在上一年的所选国家)。筛选到国家/地区必须同时适用于国家/地区和国家/地区PY。您仍然可以在表外预计算[In selection PY]字段/列。您希望同时按ID和国家/地区分组,然后检查前一年的情况。这在类似的情况下是可能的。然后,当您将数据引入Tableau时,您已经生成了第二个表,并且仍然可以按国家过滤。您不能在Tableau之外预计算[in selection PY]字段/列,因为它取决于选择。[在所选国家/地区中]=“是”,如果国家/地区和国家/地区都在所选国家/地区内。国家/地区不一定相同(例如,如果您在筛选项中选择了国家/地区美国和中国,并且如果有人在中国,而下一年在美国,[选择PY]=“是”。)