ALLNOBLANKROW

リレーションシップの親テーブルから、空白行を除くすべての行、または空白行を除く列のすべての個別値を返し、存在する可能性のあるコンテキスト フィルターをすべて無視します。

構文

ALLNOBLANKROW( {<table> | <column>[, <column>[, <column>[,…]]]} )

パラメーター

用語 定義
テーブル すべてのコンテキスト フィルターが削除されるテーブル。
すべてのコンテキスト フィルターが削除される列。

パラメーターは 1 つだけ渡す必要があります。パラメーターは、テーブルまたは列のいずれかです。

戻り値

渡されたパラメーターがテーブルの場合はテーブル、渡されたパラメーターが列の場合は値の列。

解説

  • ALLNOBLANKROW 関数は、親テーブルが、リレーションシップ内で、親列に一致しない値を持つ行が子テーブルに 1 つ以上ある場合に表示する空白行のみをフィルター処理します。 詳細については、次の例を参照してください。

  • 次の表は、DAX で提供される ALL のバリエーションとその違いをまとめたものです。

    関数と使用法 Description
    ALL(Column) テーブル内の指定された列からすべてのフィルターを削除します。その他の列に対しては、テーブル内の他のすべてのフィルターが引き続き適用されます。
    ALL(Table) 指定されたテーブルからすべてのフィルターを削除します。
    ALLEXCEPT(Table,Col1,Col2...) 指定された列を除き、テーブル内のすべてのコンテキスト フィルターをオーバーライドします。
    ALLNOBLANK(table|column) リレーションシップの親テーブルから、空白行を除くすべての行、または空白行を除く列のすべての個別値を返し、存在する可能性のあるコンテキスト フィルターをすべて無視します

    ALL 関数の動作についての一般的な説明と、ALL(Table) と ALL(Column) を使用するステップバイステップの例については、ALL 関数に関する記事を参照してください。

  • この関数は、計算列または行レベルのセキュリティ (RLS) ルールで使用される場合、DirectQuery モードでの使用はサポートされません。

サンプル データの ResellerSales_USD テーブルには、値がないためにブック内のリレーションシップのどの親テーブルにも関連付けることができない行が 1 行含まれています。 このテーブルをピボットテーブルで使用して、空白行の動作と、関連付けのないデータのカウントを処理する方法を確認できます。

手順 1:関連付けのないデータを確認する

Power Pivot ウィンドウを開き、ResellerSales_USD テーブルを選択します。 ProductKey 列で、空白の値をフィルター処理します。 1 行のみ表示されます。 その行では、Salesorderlinenumber を除く、すべての列の値が空白である必要があります。

手順 2:ピボットテーブルを作成する

新しいピボットテーブルを作成し、datetime.[暦年] 列を [行ラベル] ウィンドウにドラッグします。 次のテーブルは、予想される結果を示しています。

行ラベル
2005
2006
2007
2008
総計

2008総計の間に空白のラベルがあることに気付きます。 この空白のラベルは、不明なメンバーを表します。これは、子テーブルのいずれの値も親テーブル内の値 (この例では datetime.[暦年] 列) と一致しないことを示すために作成された特別なグループです。

この空白のラベルがピボットテーブルに表示されると、datetime.[暦年] 列に関連付けられているテーブルの一部に、空白値または一致しない値があることがわかります。 親テーブルは空白のラベルを表示しますが、一致しない行は 1 つ以上の子テーブル内にあります。

この空白のラベル グループに追加される行は、親テーブルのいずれの値とも一致しない値 (たとえば、日付/時刻テーブルに存在しない日付)、または null 値 (日付の値が存在しない) のいずれかです。 この例では、子売上テーブルのすべての列に空白の値を配置しています。 親テーブルに子テーブルよりも多くの値がある場合は、問題は発生しません。

手順 3:ALL および ALLNOBLANK を使用して行数をカウントする

次の 2 つのメジャーを日付/時刻テーブルに追加して、テーブルの行をカウントします:日付/時刻の ALLNOBLANK の行カウント日付/時刻の ALL の行カウント。 これらのメジャーの定義に使用できる式は次のとおりです。

// 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.[暦年] 列を行ラベルに追加し、新しく作成したメジャーを追加します。 結果は次の表のようになります。

行ラベル 日付/時刻の ALLNOBLANK の行カウント 日付/時刻の ALL の行カウント
2005 1280 1281
2006 1280 1281
2007 1280 1281
2008 1280 1281
1280 1281
総計 1280 1281

結果は、テーブル行数に 1 行の差があることを示しています。 ところが、Power Pivot ウィンドウを開いて日付/時刻テーブルを選択した場合、ここに示されている特殊な空白行が不明なメンバーであるため、テーブル内に空白行が見つかりません。

手順 4.カウントが正確であることを確認する

ALLNOBLANKROW では真の空白行がカウントされず、親テーブルの特殊な空白行のみを処理することを証明するために、次の 2 つのメジャーを ResellerSales_USD テーブルに追加します:ResellerSales_USD の ALLNOBLANKROW の行カウントすべての ResellerSales_USD の ALL の行カウント

新しいピボットテーブルを作成し、datetime.[暦年] 列を [行ラベル] ウィンドウにドラッグします。 作成したメジャーをここで追加します。 結果は次のようになります。

行ラベル 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 つ以上の子テーブルに一致しない値または空白値が含まれる場合に、テーブル内の真の空白行をカウントせず、親テーブルで生成された特殊なケースである空白行のみを処理するためです。

フィルター関数
ALL 関数
FILTER 関数