HASONEVALUE 関数 (DAX)
columnName のコンテキストがフィルター処理されて単一の重複しない値に絞り込まれている場合に TRUE を返します。 それ以外の場合は FALSE です。
構文
HASONEVALUE(<columnName>)
パラメーター
- columnName
標準 DAX 構文を使用した既存の列の名前。 式を指定することはできません。
戻り値
columnName のコンテキストがフィルター処理されて、単一の重複しない値に絞り込まれている場合は TRUE。 それ以外の場合は FALSE。
説明
- HASONEVALUE() は COUNTROWS(VALUES(<columnName>)) = 1 と等価です。
使用例
次の例では、あらかじめ定義されたシナリオに対するパーセンテージを見積もるために、コンテキストが 1 つの値でスライスされるかどうかを確認する式を作成します。このケースでは、再販業者の販売を 2007 年度の販売と比較した後、コンテキストが単一年度でフィルター処理されるかどうかを確認します。 さらに、比較が無意味である場合は空白を返します。
このシナリオで使用するモデルを含むスプレッドシートを PowerPivot サンプル データのページからダウンロードできます。
次の式を使用して、[ResellerSales compared to 2007] という名前のメジャーを作成します。
=IF(HASONEVALUE(DateTime[CalendarYear]),SUM(ResellerSales_USD[SalesAmount_USD])/CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]),DateTime[CalendarYear]=2007),BLANK())
メジャーを作成した後、[ResellerSales compared to 2007] の下に表示される結果は、次のように空白になっています。
ResellerSales compared to 2007
結果のセルが空白になるのは、コンテキストに単一の年度フィルターがないためです。
DateTime[CalendarYear] を [列ラベル] ボックスにドラッグすると、テーブルは次のように表示されます。
列ラベル
2005
2006
2007
2008
ResellerSales compared to 2007
24.83 %
74.88 %
100.00 %
50.73 %
ProductCategory[ProductCategoryName] を [行ラベル] ボックスにドラッグすると、テーブルは次のように表示されます。
ResellerSales compared to 2007
列ラベル
行ラベル
2005
2006
2007
2008
Accessories
6.74 %
31.40 %
100.00 %
55.58 %
Bikes
28.69 %
77.92 %
100.00 %
53.46 %
Clothing
3.90 %
55.86 %
100.00 %
44.92 %
Components
11.05 %
65.99 %
100.00 %
38.65 %
総計
24.83 %
74.88 %
100.00 %
50.73 %
"総計" が列の末尾に表示されます。ただし、行の末尾には表示されません。 これは、行の総計のコンテキストは複数年を暗黙的に示すのに対し、列のコンテキストは単一年を暗黙的に示すからです。
DateTime[CalendarYear] を [水平スライサー] ボックスにドラッグし、SalesTerritory[SalesTerritoryGroup] を [水平ラベル] ボックスにドラッグします。 テーブルには複数年のデータが含まれているため、結果セットは空になります。 スライサーで 2006 を選択すると、テーブルにデータが表示されます。 他の年度を選択して、結果が変化することを確認してください。
要約すると、HASONEVALUE() を使用すると、columnName の単一の値のコンテキストで式が評価されるかどうかを識別できます。