在从大型数据集中删除一些不需要的数据时,我们遇到了一些问题。 数据集类似于下表:
Inv_Number | Type | Week | Quarter | Amount | Order
1 | Invoice | W1 | Q1 | 100 | A1233
2 | Invoice | W2 | Q1 | 50 | A100
3 | Invoice | W2 | Q1 | 150 | A567
4 | CR MEMO | W3 | Q2 | -100 | A1233
5 | Invoice | W2 | Q4 | 70 | A345
6 | Invoice | W5 | Q3 | 100 | A1233
7 | CR MEMO | W7 | Q2 | -25 | A100
预期的过滤结果应类似于:
Type | Week | Quarter | Amount | Order
Invoice | W2 | Q1 | 25 | A100
Invoice | W2 | Q1 | 150 | A567
Invoice | W2 | Q4 | 70 | A345
Invoice | W5 | Q3 | 100 | A1233
基本上,我们有一个唯一的标识符(Order
),我们需要删除所有CR MEMO和相关发票(部分或不部分)
我尝试了以下方法:
HasCredit = if(CALCULATE(SUM('inv'[Amount]),FILTER(ALL('inv'),inv[Order]=EARLIER(inv[Order]) && inv[Type]="CR MEMO"))+CALCULATE(SUM(inv[Amount]),FILTER(ALL('inv'),inv[Order]=EARLIER(inv[Order])&&inv[Type]="ORIGINAL"))=0,1,0)
然后将新的计算字段添加到过滤器中,并仅选择0(零)即可提供所需的输出
进一步的解释:
数据集涉及发票,CR MEMO可理解为贷记发票。如果您有一张完全记入100美元的发票(例如:Inv_number = 1),则您将拥有类型= CR MEMO的新发票(例如:Inv_number = 4)。现在,我需要删除仅由Order链接的那些行,并提供已经描述的最终输出。请记住,一张CR MEMO(贷记发票)可能只包含一张原始发票的一部分金额