Dax计算列
Dax calculated column
我有一个带有 OrderNo 和 ProductCategory 的 table。一个订单可以有多个订单行。一个订单也可以有不同的 ProductCategories。 table 看起来像这样:
OrderNo ProductCategory
O1 Cat1
O1 Cat2
O1 Cat3
O2 Cat1
O3 Cat4
如果 OrderNo 存在 Cat1,我想要一个计算列 "CalcC" returns 1。我希望为具有该订单号的所有行返回 1。
我的结果 table 如下所示:
OrderNo ProductCategory CalcC
O1 Cat1 1
O1 Cat2 1
O1 Cat3 1
O2 Cat1 1
O3 Cat4 0
如果有人能用一些 DAX 语法帮助我实现这一点,我将不胜感激。
谢谢。
CalcC =
IF(
ISEMPTY(
CALCULATETABLE(
'FactOrder'
,ALLEXCEPT( 'FactOrder', 'FactOrder'[OrderNo] )
,'FactOrder'[ProductCategory] = "Cat1"
)
)
,0
,1
)
IF() 是微不足道的。 ISEMPTY() 检查 table 是否有 0 或 >0 行。 CALCULATETABLE() 根据参数 2-N 中定义的过滤器上下文计算参数 1 中的 table。 ALLEXCEPT() 从命名 table 中清除上下文,仅在命名列上保留它。
我们的 CALCULATETABLE() returns 'FactOrder' 仅当 [OrderNo] 与调用行上下文中存在的相同时。所有过滤器参数都组合在逻辑与中,因此除了将 table 限制为与调用行上下文共享 [OrderNo] 的那些之外,我们还将其限制为 [ProductCategory] = [=17= 的行].
如果 table 为空,我们 return 0,否则我们 return 1.
我有一个带有 OrderNo 和 ProductCategory 的 table。一个订单可以有多个订单行。一个订单也可以有不同的 ProductCategories。 table 看起来像这样:
OrderNo ProductCategory O1 Cat1 O1 Cat2 O1 Cat3 O2 Cat1 O3 Cat4
如果 OrderNo 存在 Cat1,我想要一个计算列 "CalcC" returns 1。我希望为具有该订单号的所有行返回 1。
我的结果 table 如下所示:
OrderNo ProductCategory CalcC O1 Cat1 1 O1 Cat2 1 O1 Cat3 1 O2 Cat1 1 O3 Cat4 0
如果有人能用一些 DAX 语法帮助我实现这一点,我将不胜感激。
谢谢。
CalcC =
IF(
ISEMPTY(
CALCULATETABLE(
'FactOrder'
,ALLEXCEPT( 'FactOrder', 'FactOrder'[OrderNo] )
,'FactOrder'[ProductCategory] = "Cat1"
)
)
,0
,1
)
IF() 是微不足道的。 ISEMPTY() 检查 table 是否有 0 或 >0 行。 CALCULATETABLE() 根据参数 2-N 中定义的过滤器上下文计算参数 1 中的 table。 ALLEXCEPT() 从命名 table 中清除上下文,仅在命名列上保留它。
我们的 CALCULATETABLE() returns 'FactOrder' 仅当 [OrderNo] 与调用行上下文中存在的相同时。所有过滤器参数都组合在逻辑与中,因此除了将 table 限制为与调用行上下文共享 [OrderNo] 的那些之外,我们还将其限制为 [ProductCategory] = [=17= 的行].
如果 table 为空,我们 return 0,否则我们 return 1.