ALLNOBLANKROW
从关系的父表中,返回 all 行,但 blank 行,orall 列的不同 values,但 blank 行,and 忽略可能存在的任何上下文 filters。
语法
ALLNOBLANKROW( {<table> | <column>[, <column>[, <column>[,…]]]} )
参数
术语 | 定义 |
---|---|
table |
删除 all 上下文 filters 的表。 |
column |
删除 all 上下文 filters 的列。 |
必须仅传递一个参数;参数是 or 列的表。
返回 value
一个表,当传递的参数是一个表时,当传递的参数是列时,or 一列 values。
言论
ALLNOBLANKROW 函数仅 filters 父表在关系中的 blank 行时,子表中有一 or 行与父列不匹配 values。 有关彻底说明,请参阅以下示例。
下表总结了
ALL
中提供的 DAX 变体,and 差异:函数 and 用法 描述 ALL(Column)
从表中的指定列中删除 allfilters;all 表中的其他 filters,其他列仍适用。 ALL(Table)
从指定表中删除 allfilters。 ALLEXCEPT(Table,Col1,Col2...)
覆盖表中 all 指定列的 filters 上下文 except。 ALLNOBLANK(table|column)
从关系的父表中,返回 all 行,但 blank 行,orall 列的不同 values,但 blank 行,and 忽略可能存在的任何上下文 filters 有关 ALL 函数工作原理的一般说明,以及使用 ALL(表)andALL(列)的分步示例,请参阅 ALL 函数。
在计算列 not 行级别安全性 (RLS) 规则中使用时,or 支持在 DirectQuery 模式下使用此函数。
例
在 sample 数据中,ResellerSales_USD表 contains 一行没有 valuesand 因此不能 related 工作簿内关系中的任何父表。 你将在数据透视表中使用此表,以便查看 blank 行行为 and 如何处理不相关的数据计数。
步骤 1:验证不相关的数据
打开 Power 透视 window,然后选择ResellerSales_USD表。 在 ProductKey 列中,filterblankvalues。 将保留一行。 在该行中,salesOrderLineNumber 应 allvaluesblank 列 except。
步骤 2:创建数据透视表
创建新的数据透视表,然后拖动列日期/时间。[CalendarYear],指向“行标签”窗格。 下表显示了预期结果:
行标签 |
---|
2005 |
2006 |
2007 |
2008 |
总计 |
请注意 2008 blankand之间的 标签。 此 blank 标签表示未知成员,该成员是一个特殊组,用于考虑子表中没有匹配 values 的子表中的任何 value,在本示例中为日期/时间。[CalendarYear] 列。
在数据透视表中看到此 blank 标签时,你知道在列日期/时间 related 的某些表中。[CalendarYear],有 blankvaluesor 非匹配 values。 父表是显示 blank 标签的表,但 not 匹配的行位于一个 or 更多子表中。
添加到此 blank 标签组的行要么是 valuesnot 与父表中的任何 value 匹配,例如,日期时间表中存在 date 的 not--or null values,这意味着在 valuedate 没有 all。 在此示例中,我们在子销售表的 blank 列中放置了 valueall。 父表中的 values 多于子表中 not 会导致问题。
步骤 3:使用 allNOBLANK CountALLand 行
将以下两个度量值添加到 datetime 表,以 count 表行:Countrows datetimeALLNOBLANK,CountrowsALL datetime。 可用于 define 这些度量值的公式包括:
// Countrows ALLNOBLANK of datetime
= COUNTROWS(ALLNOBLANKROW('DateTime'))
// Countrows ALL of datetime
= COUNTROWS(ALL('DateTime'))
// Countrows ALLNOBLANKROW of ResellerSales_USD
= COUNTROWS(ALLNOBLANKROW('ResellerSales_USD'))
// Countrows ALL of ResellerSales_USD
= COUNTROWS(ALL('ResellerSales_USD'))
在 blank 数据透视表上添加日期/时间。[CalendarYear] 列到行标签,and 然后添加新创建的度量值。 结果应如下表所示:
行标签 | datetime 的 Countrows ALLNOBLANK | datetime 的 CountrowsALL |
---|---|---|
2005 | 1280 | 1281 |
2006 | 1280 | 1281 |
2007 | 1280 | 1281 |
2008 | 1280 | 1281 |
1280 | 1281 | |
总计 | 1280 | 1281 |
结果显示表行 count中 1 行的差异。 但是,if 打开 Power 数据透视 windowand 选择日期/时间表,则无法 find 表中的任何 blank 行,因为此处提到的特殊 blank 行是未知成员。
步骤 4:验证 count 是否准确
为了证明
创建新的数据透视表,and 拖动列日期/时间。[CalendarYear],指向“行标签”窗格。 Now 添加刚刚创建的度量值。 结果应如下所示:
行标签 | ResellerSales_USD的 CountrowsALLNOBLANKROW | ResellerSales_USD的 CountrowsALL |
---|---|---|
2005 | 60856 | 60856 |
2006 | 60856 | 60856 |
2007 | 60856 | 60856 |
2008 | 60856 | 60856 |
60856 | 60856 | |
总计 | 60856 | 60856 |
Now 这两个度量值的结果相同。 这是因为 ALLNOBLANKROW 函数确实 notcount 表中真正 blank 行,但仅处理父表中生成的特殊情况的 blank 行,而关系中的子表中的一个 or 更多子表包含非匹配 valuesorblankvalues。