ALLNOBLANKROW
リレーションシップの親テーブルから、空白行以外のすべての行、または空白行以外の列のすべての個別の値を返し、存在する可能性のあるコンテキスト フィルターは無視します。
構文
ALLNOBLANKROW( {<table> | <column>[, <column>[, <column>[,…]]]} )
パラメーター
用語 | 定義 |
---|---|
table |
すべてのコンテキスト フィルターが削除されるテーブル。 |
column |
すべてのコンテキスト フィルターが削除される列。 |
パラメーターは 1 つだけ渡す必要があります。パラメーターはテーブルまたは列です。
戻り値
渡されたパラメーターがテーブルの場合はテーブル、渡されたパラメーターが列の場合は値の列。
備考
ALLNOBLANKROW 関数は、親テーブルが親列に一致しない値を持つ 1 つ以上の行がある場合に、リレーションシップ内の親テーブルに表示される空白行のみをフィルター処理します。 詳細な説明については、次の例を参照してください。
次の表は、DAXで提供される
ALL
のバリエーションとその違いをまとめたものです。関数と使用法 形容 ALL(Column)
テーブル内の指定した列からすべてのフィルターを削除します。テーブル内の他のすべてのフィルターは、他の列に適用されます。 ALL(Table)
指定したテーブルからすべてのフィルターを削除します。 ALLEXCEPT(Table,Col1,Col2...)
指定した列を除く、テーブル内のすべてのコンテキスト フィルターをオーバーライドします。 ALLNOBLANK(table|column)
リレーションシップの親テーブルから、空白行以外のすべての行、または空白行以外の列のすべての個別の値を返し、存在する可能性があるコンテキスト フィルターを無視します 関数のしくみの一般的な説明と、 (Table) と (Column) を使用するステップ バイ ステップの例については、関数 参照してください。 この関数は、計算列または行レベル セキュリティ (RLS) 規則で使用する場合、DirectQuery モードでは使用できません。
例
サンプル データでは、ResellerSales_USD テーブルに値のない行が 1 つ含まれているため、ブック内のリレーションシップ内の親テーブルに関連付けることができません。 このテーブルをピボットテーブルで使用すると、空白の行の動作と、関連のないデータのカウントを処理する方法を確認できます。
手順 1: 関連のないデータを確認する
Power Pivot ウィンドウ開き、ResellerSales_USDテーブルを選択します。 ProductKey 列で、空白の値をフィルター処理します。 1 行が残ります。 その行では、SalesOrderLineNumber を除くすべての列値を空白にする必要があります。
手順 2: ピボットテーブルを作成する
新しいピボットテーブルを作成し、列 datetime をドラッグします。[Calendar Year], to the Row Labels pane. 次の表に、予想される結果を示します。
行ラベル |
---|
2005 |
2006 |
2007 |
2008 |
総計 |
2008 と 総計の間の空白のラベルに注意してください。 この空白ラベルは、親テーブルの値が一致しない子テーブル内の値を考慮するために作成された特殊なグループである Unknown メンバーを表します。この例では datetime です。[Calendar Year] 列。
ピボットテーブルにこの空白のラベルが表示されると、列に関連する一部のテーブルで datetime が表示されます。[暦年]には、空白の値または一致しない値があります。 親テーブルは空白のラベルを示すテーブルですが、一致しない行は 1 つ以上の子テーブルにあります。
この空白のラベル グループに追加される行は、親テーブルの値と一致しない値のいずれかです。たとえば、datetime テーブルに存在しない日付や null 値です。つまり、日付の値はまったくありません。 この例では、子売上テーブルのすべての列に空白の値を配置しました。 親テーブルの値が子テーブルよりも多い場合、問題は発生しません。
手順 3: ALL と ALLNOBLANK を使用して行をカウントする
datetime テーブルに次の 2 つのメジャーを追加して、テーブルの行をカウントします。datetimeの ALLNOBLANK
// 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'))
空のピボットテーブルに datetime を追加します。[Calendar Year] 列を行ラベルに追加し、新しく作成したメジャーを追加します。 結果は次の表のようになります。
行ラベル | datetime の ALLNOBLANK をカウントします。 | datetime の ALL カウント |
---|---|---|
2005 | 1280 | 1281 |
2006 | 1280 | 1281 |
2007 | 1280 | 1281 |
2008 | 1280 | 1281 |
1280 | 1281 | |
総計 | 1280 | 1281 |
結果は、テーブル行数の 1 行の差を示しています。 ただし、Power Pivot ウィンドウ 開き、datetime テーブルを選択すると、ここに記載されている特殊な空白行が不明なメンバーであるため、テーブル内に空白行が見つかりません。
手順 4: カウントが正確であることを確認する
ALLNOBLANKROW が本当に空白の行をカウントせず、親テーブルの特殊な空白行のみを処理することを証明するには、ResellerSales_USD テーブルに次の 2 つのメジャーを追加します。Countrows ALLNOBLANKROW of ResellerSales_USD、Countrows ALL of ResellerSales_USD。
新しいピボットテーブルを作成し、列 datetime をドラッグします。[Calendar Year], to the Row Labels pane. ここで、先ほど作成したメジャーを追加します。 結果は次のようになります。
行ラベル | ResellerSales_USDのカウント ALLNOBLANKROW | ResellerSales_USDのカウント ALL |
---|---|---|
2005 | 60856 | 60856 |
2006 | 60856 | 60856 |
2007 | 60856 | 60856 |
2008 | 60856 | 60856 |
60856 | 60856 | |
総計 | 60856 | 60856 |
これで、2 つのメジャーの結果が同じになりました。 これは、ALLNOBLANKROW 関数はテーブル内の真の空白行をカウントせず、リレーションシップ内の 1 つ以上の子テーブルに一致しない値または空白値が含まれている場合に、親テーブルで生成される特殊なケースである空白行のみを処理するためです。