PowerBI_logic变量的操作
PowerBI_logic operation of variables
我有一个数据框“test”,如下:
ID city quality year
1 NY special 2020
2 NY special 2020
3 NY special 2020
4 NY special 2020
5 NY normal 2020
6 PA special 2020
1 NY special 2019
2 NY special 2019
3 NY normal 2019
4 BJ normal 2019
5 BJ normal 2019
6 PA normal 2019
我想给每个ID一个值:如果一个ID在“2020”的“NY”中是新的“special”,则该值为1,否则为0。所以这两个ID被赋予1:3 , 4;所有其他人都给0.
我从 PowerBI 中的以下内容开始:
NY_new special_2020 =
VAR
NY_special_2020 = FILTER('test', 'test'[year] = "2020" && 'test'[city]= "NY" && test[quality] = "special")
VAR
NY_special_2019 = FILTER('test', 'test'[year] = "2019" && 'test'[city]= "NY" && test[quality] = "special")
我的问题是如何组合这两个变量以仅保留 NY_special_2020 中的变量,而不保留 NY_special_2019 中的变量?
非常感谢!
您可以使用以下措施来实现所需的输出-
new_special =
var current_id = MIN(your_table_name[ID])
var current_year = MIN(your_table_name[year])
var count_previous_special =
CALCULATE(
COUNT(your_table_name[quality]),
FILTER(
ALL(your_table_name),
your_table_name[ID] = current_id
&& your_table_name[year] < current_year
&& your_table_name[quality] = "special"
&& your_table_name[city] = "NY"
)
)
RETURN
IF(
MIN(your_table_name[city]) = "NY" && MIN(your_table_name[quality]) = "special",
IF(count_previous_special >= 1, 0,1),
0
)
这也将 return 2019 年为 0 或 1,如下所示。但是,如果您只希望 2020 年为 0/1,则可以向 IF 条件添加额外的过滤器。
输出-
试试下面的代码,仅比较 2020 年和 2019 年-
new_special_2 =
var current_id = MIN(your_table_name[ID])
var current_year = MIN(your_table_name[year])
var count_previous_special =
CALCULATE(
COUNT(your_table_name[quality]),
FILTER(
ALL(your_table_name),
your_table_name[ID] = current_id
&& your_table_name[year] < current_year
&& your_table_name[quality] = "special"
&& your_table_name[city] = "NY"
&& your_table_name[year] = 2019
)
)
RETURN
IF(
MIN(your_table_name[city]) = "NY"
&& MIN(your_table_name[quality]) = "special"
&& MIN(your_table_name[year]) = 2020,
IF(
count_previous_special >= 1,
0,
1
),
0
)
我有一个数据框“test”,如下:
ID city quality year
1 NY special 2020
2 NY special 2020
3 NY special 2020
4 NY special 2020
5 NY normal 2020
6 PA special 2020
1 NY special 2019
2 NY special 2019
3 NY normal 2019
4 BJ normal 2019
5 BJ normal 2019
6 PA normal 2019
我想给每个ID一个值:如果一个ID在“2020”的“NY”中是新的“special”,则该值为1,否则为0。所以这两个ID被赋予1:3 , 4;所有其他人都给0.
我从 PowerBI 中的以下内容开始:
NY_new special_2020 =
VAR
NY_special_2020 = FILTER('test', 'test'[year] = "2020" && 'test'[city]= "NY" && test[quality] = "special")
VAR
NY_special_2019 = FILTER('test', 'test'[year] = "2019" && 'test'[city]= "NY" && test[quality] = "special")
我的问题是如何组合这两个变量以仅保留 NY_special_2020 中的变量,而不保留 NY_special_2019 中的变量?
非常感谢!
您可以使用以下措施来实现所需的输出-
new_special =
var current_id = MIN(your_table_name[ID])
var current_year = MIN(your_table_name[year])
var count_previous_special =
CALCULATE(
COUNT(your_table_name[quality]),
FILTER(
ALL(your_table_name),
your_table_name[ID] = current_id
&& your_table_name[year] < current_year
&& your_table_name[quality] = "special"
&& your_table_name[city] = "NY"
)
)
RETURN
IF(
MIN(your_table_name[city]) = "NY" && MIN(your_table_name[quality]) = "special",
IF(count_previous_special >= 1, 0,1),
0
)
这也将 return 2019 年为 0 或 1,如下所示。但是,如果您只希望 2020 年为 0/1,则可以向 IF 条件添加额外的过滤器。
输出-
试试下面的代码,仅比较 2020 年和 2019 年-
new_special_2 =
var current_id = MIN(your_table_name[ID])
var current_year = MIN(your_table_name[year])
var count_previous_special =
CALCULATE(
COUNT(your_table_name[quality]),
FILTER(
ALL(your_table_name),
your_table_name[ID] = current_id
&& your_table_name[year] < current_year
&& your_table_name[quality] = "special"
&& your_table_name[city] = "NY"
&& your_table_name[year] = 2019
)
)
RETURN
IF(
MIN(your_table_name[city]) = "NY"
&& MIN(your_table_name[quality]) = "special"
&& MIN(your_table_name[year]) = 2020,
IF(
count_previous_special >= 1,
0,
1
),
0
)