我有两个来自不同来源的表,具有不同的刷新频率。
• 表_1用于将各种订单进行分组(每月更新,有K行数据)。
• 表_2是员工汇报的工作情况(每日更新,M行数据)。
表之间的简单连接将使这项任务变得容易。
但是,在 Table_1 中,订单分为两列:Quote# 和 Order#。 并且,在 Table_2 中,所有内容都分组为一列。
我正在尝试创建一个基于 IF 条件的 SUMIF,其功能与此类似:
Contact_Hours =
/* if the Quote didn't turn into an Order */
if 'Table_1'[Order#] = ""
then sumx(filter(Table_2; [WorkOrder] = 'Table_1'[Quote#]; [ContactHours]))
/* if Quote became an Order */
else if sumx(filter(Table_2; [WorkOrder] = 'Table_1'[Order#]; [ContactHours]))
/* if there's "crazy data" */
else "Nothing found"
这在 PowerBI / DAX 中可能吗?
我尝试将 if-then / else if-then / else 放入 CALCULATE 中,但没有成功。
还尝试使用简单的 IF:
IF(
ISBLANK(Table_1[Order#]);
CALCULATE(SUM(Table_2[ContactHours]); Table_2[Project] = Table_1[Quote#]);
CALCULATE(SUM(Table_2[ContactHours]); Table_2[Project] = Table_1[Order#])
)
但是它抛出了一个错误:
“表达式包含来自多个表的列,但仅包含列 来自单个表的数据可以用在 True/False 表达式中,即 用作表过滤表达式。”
=== 一个粗略但可行的解决方案===
解决此问题的一种方法是在 Table_1 中使用 2 个辅助列:
• 一个辅助列,用于计算与 Table_2[Project] 对应的 Quote# 列中任何内容的 ContactHours:
ContactHours_Quote =
CALCULATE(
SUM('Table_2'[ContactHours] );
FILTER( 'Table_2'; 'Table_2'[Project] = 'Table_1'[Quote#])
)
• 然后在第二个帮助列中对订单# 执行相同操作:
ContactHours_Order =
CALCULATE(
SUM('Table_2'[ContactHours] );
FILTER( 'Table_2'; 'Table_2'[Project] = 'Table_1'[Order#])
)
• 最后,将辅助列的结果相加:
[ContHrs_Qte]+[ContHrs_Ord]
你的两个表的结构是什么?由于您声明 “但是,在 Table_1 中,订单分为两列:Quote# 和 Order#。并且,在 Table_2 中,所有内容都分组到单个列中。”,因此可以创建一个新列(在 Power 中)查询或更上游)也将 Quote# 和 Order# 合并到一列中。这样,您就可以创建一个关系,并且您的计算会容易得多。
一些简单的数据样本屏幕截图会很有用。