分析しているデータに、目的の結果を得るために必要な特定のフィールドが含まれていない場合があります。 計算列 は、このような状況に役立ちます。 計算列では、データ分析式 (DAX) の数式を使用して列の値を定義します。 このツールは、2 つの異なる列のテキスト値をまとめるから、他の値から数値を計算する方法まで、あらゆる場合に役立ちます。 たとえば、データに [市区町村 ] フィールドと [州] フィールドがあるのに、"マイアミ、FL" などの両方を含む 1 つの Location フィールドが必要であるとします。
計算列は DAX 数式に基づいている点では計算項目に似ていますが、使用方法が異なります。 多くの場合、視覚化の [値] 領域でメジャーを使用して、他のフィールドに基づいて結果を計算します。 計算列は、視覚化の行、軸、凡例、およびグループ領域の新しい フィールド として使用します。
このチュートリアルでは、計算列をいくつか理解して作成し、Power BI Desktop のレポートの視覚化で使用する方法について説明します。
[前提条件]
このチュートリアルは、Power BI Desktop を使用してより高度なモデルを作成する方法を既に理解している Power BI ユーザーを対象としています。 データの取得と Power Query エディターを使用してデータをインポートし、複数の関連テーブルを操作し、レポート キャンバスにフィールドを追加する方法は既にわかっています。 Power BI Desktop を初めて使用する場合は、「 Power BI Desktop の概要」をご確認ください。
このチュートリアルでは、「Power BI Desktop 用の Contoso Sales Sample」を使用します。このサンプルは、「Power BI Desktop での独自のメジャーの作成」チュートリアルで使用されているものと同じです。 架空の会社 Contoso, Inc. からのこの売上データは、データベースからインポートされました。 データ ソースに接続したり、Power Query エディターで表示したりすることはできません。 自分のコンピューターでファイルをダウンロードして展開し、Power BI Desktop で開きます。
関連テーブルの値を含む計算列を作成する
販売レポートでは、"Cell phone – Accessories"、"Cell phone – Smartphones >PDA" など、製品カテゴリとサブカテゴリを 1 つの値として表示します。 フィールドリストにはそのデータを提供するフィールドはありませんが、ProductCategory フィールドと ProductSubcategory フィールドはそれぞれ独自のテーブルにあります。 これら 2 つの列の値を結合する計算列を作成できます。 DAX 数式では、既に存在する異なるテーブル間のリレーションシップを含め、既に持っているモデルの完全な機能を使用できます。
ProductSubcategory テーブルに新しい列を作成するには、[フィールド] ウィンドウの ProductSubcategory の横にある省略記号 ... を右クリックまたは選択し、メニューから [新しい列] を選択します。
[新しい列] を選択すると、レポート キャンバスの上部に数式バーが表示され、列に名前を付けて DAX 数式を入力できるようになります。
既定では、新しい計算列の名前は Column です。 名前を変更しない場合、新しい列の名前は 列 2、 列 3 などになります。 列をより識別できるように、数式バーで 列名 が既に強調表示されている間は、「 ProductFullCategory」と入力して名前を変更し、等しい (=) 記号を入力します。
新しい列の値を ProductCategory フィールドの名前で始める必要があります。 この列は別の関連テーブルにあるため、 RELATED 関数を使用して取得できます。
等号の後に 「r」と入力します。 ドロップダウン候補リストには、文字 R で始まるすべての DAX 関数が表示されます。各関数を選択すると、その効果の説明が表示されます。 入力すると、提案リストは必要な関数に近づいてスケーリングされます。 [関連] を選択し、Enter キーを押します。
関連付けられた列の追加の候補リストが、RELATED 関数に渡すことができる説明や必要なパラメーターの詳細と共に、開きかっこと共に表示されます。
ProductCategory テーブルの ProductCategory 列が必要です。 ProductCategory[ProductCategory] を選択し、Enter キーを押して、終わりかっこを入力します。
ヒント
構文エラーは、多くの場合、閉じかっこが見つからないか、正しく配置されなかったことが原因で発生しますが、Power BI Desktop によって追加される場合があります。
ダッシュとスペースで ProductCategories と ProductSubcategories を新しい値で区切る必要があるため、最初の式の終わりかっこの後にスペース、アンパサンド (&)、二重引用符 (")、スペース、ダッシュ (-)、別のスペース、別の二重引用符、および別のアンパサンドを入力します。 数式は次のようになります。
ProductFullCategory = RELATED(ProductCategory[ProductCategory]) & " - " &ヒント
さらにスペースが必要な場合は、数式バーの右側にある下向きのシェブロンを選択して、数式エディターを展開します。 エディターで、 Alt キーを押しながら Enter キーを押して行を下に移動し、 Tab キー を押して移動します。
左角かっこ ([) を入力し、[ProductSubcategory] 列を選択して数式を完成させます。
このテーブルに計算列を作成するため、別の RELATED 関数を使用して 2 番目の式で ProductSubcategory テーブルを呼び出す必要はありませんでした。 [ProductSubcategory] は、テーブル名のプレフィックス (完全修飾) または (非修飾) なしで入力できます。
Enter キーを押すか、数式バーのチェックマークを選択して、数式を完了します。 数式が検証され、[フィールド] ウィンドウの ProductSubcategory テーブルに ProductFullCategory 列名が表示されます。
注
Power BI Desktop では、[ フィールド ] ウィンドウに計算列に特別なアイコンが表示され、数式が含まれていることが示されます。 Power BI サービス (Power BI サイト) では、数式を変更する方法がないため、計算列にはアイコンがありません。
レポートで新しい列を使用する
これで、新しい ProductFullCategory 列を使用して、ProductFullCategory による SalesAmount を確認できます。
ProductSubcategory テーブルから ProductFullCategory 列を選択またはドラッグしてレポート キャンバスに配置し、すべての ProductFullCategory 名を示すテーブルを作成します。
Sales テーブルから SalesAmount フィールドを選択またはドラッグして、各 ProductFullCategory の SalesAmount を表示します。
IF 関数を使用する計算列を作成する
Contoso Sales サンプルには、アクティブなストアと非アクティブなストアの両方の売上データが含まれています。 Active StoreName フィールドを作成して、アクティブなストアの売上がレポート内の非アクティブなストアの売上から明確に分離されるようにする必要があります。 新しい Active StoreName 計算列では、各アクティブなストアをストアのフル ネームで表示し、非アクティブなストアの売上を 非アクティブという 1 つの行項目にまとめる必要があります。
幸いなことに、 Stores テーブルには Status という名前の列があり、アクティブなストアの場合は "オン"、非アクティブなストアの場合は "Off" の値を使用して、新しい Active StoreName 列の値を作成できます。 DAX 数式では、論理 IF 関数を使用して各ストアの 状態 をテストし、結果に応じて特定の値を返すことができます。 ストアの 状態 が "オン" の場合、数式はストアの名前を返します。 "Off" の場合、数式は "Inactive" の Active StoreName を 割り当てます。
Stores テーブルに新しい計算列を作成し、数式バーに Active StoreName という名前を付けます。
=記号の後に「IF」と入力します。 候補の一覧には、追加できる内容が表示されます。 IF を選択します。
IF の最初の引数は、ストアの状態が "On" かどうかを論理的にテストします。 Stores テーブルから列を一覧表示するために左括弧 [ を入力し、[Status] を選択します。
[Status] の直後に「="On"」と入力し、コンマ (,) を入力して引数を終了します。 ツールヒントは、結果が TRUE の場合に返す値を追加する必要があることを示しています。
ストアの状態が "オン" の場合は、ストアの名前を表示します。 開き角かっこ ([) を入力し、[StoreName] 列を選択してから、さらにコンマを入力します。 ツールヒントは、結果が FALSE の場合に返す値を追加する必要があることを示します。
値を "非アクティブ" にする場合は、「 非アクティブ」と入力し、 Enter キーを押すか、数式バーのチェックマークを選択して数式を完了します。 数式が検証され、[フィールド] ペインの [ストア] テーブルに新しい列の名前が表示されます。
新しい Active StoreName 列は、他のフィールドと同様に視覚化で使用できます。 Active StoreName で SalesAmounts を表示するには、[Active StoreName] フィールドを選択するか、レポート キャンバスにドラッグして、[SalesAmount] フィールドを選択するか、テーブルにドラッグします。 この表では、アクティブなストアは名前によって個別に表示されますが、非アクティブなストアは最後に 非アクティブとしてグループ化されます。
学習した内容
計算列を使用すると、データを強化し、より簡単な分析情報を提供できます。 [フィールド] ウィンドウと数式バーで計算列を作成する方法、提案リストとヒントを使用して数式を作成する方法、RELATED や IF などの DAX 関数を適切な引数で呼び出す方法、レポートの視覚化で計算列を使用する方法について説明しました。
関連コンテンツ
DAX 数式の詳細を確認し、より高度な数式を使用して計算列を作成する場合は、 Power BI Desktop の DAX の基本を参照してください。 この記事では、構文、関数、コンテキストのより完全な理解など、DAX の基本的な概念に焦点を当てます。
データ分析式 (DAX) 参照を必ずお気に入りに追加してください。 このリファレンスでは、DAX 構文、演算子、および 200 を超える DAX 関数の詳細を確認できます。
関心のあるその他の記事: