ALLNOBLANKROW

适用于:计算列计算表Measure视觉计算

从关系的父表中,返回 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 是否准确

为了证明 确实 任何真正 行, 只处理父表中的特殊 行,请将以下两个度量值添加到ResellerSales_USD表中:ResellerSales_USD,ResellerSales_USD

创建新的数据透视表,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。

Filter 函数ALL 函数FILTER 函数