Power BIでレポートを作り始めたとき、「とりあえずデータを読み込んで可視化してみたものの、思ったように集計できない」「レポートが重い」「後から修正が大変」と感じたことはないでしょうか。 実は、こうした悩みの多くはデータ変換の設計が原因で起こります。 Power BIでは、レポート作成やDAXよりも前段階にあるデータ変換が非常に重要です。どのような構造(概念)でデータを持たせるのか、データ型は正しく設定されているか、列をどこで・どのように作成/変換するのか――これらを理解しているかどうかで、レポートのパフォーマンスや保守性は大きく変わります。 本記事では、Power BIを使う上で押さえておきたいデータ変換の基礎知識として、
① 概念(スタースキーマ)
② データ型
③ 列の作成・変換
の3つのポイントを中心に解説します。これからPower BIを学ぶ方や、自己流で使ってきた方が「なぜそうするのか」を理解するための土台として、ぜひ参考にしてください。
目次
1. 概念(スタースキーマ)2. データ型
3. 列の追加
4. 値の置換
5. まとめ
1.概念 (スタースキーマ)
スタースキーマとはデータモデリングにおける一種のデータ構造を指し、「事実データ」と「分析の切り口となるデータ」を分けて整理する考え方です。 図1のように、中心に集計対象となるデータを置き、その周りに「日付」「商品」「顧客」などの分析の切り口となるデータを配置する形が、星(スター)のように見えるため、この名前が付いています。図1 スタースキーマ概念図
スタースキーマは主に2種類のテーブルで構成されます。
① ファクトテーブル
ファクトテーブルは「集計したい数値が入っているテーブル」を指します。
Power BIでは、売上・数量・回数などの分析対象となる実績データを保持します。
② ディメンションテーブル
ディメンションテーブルはファクトテーブルの数値を「説明」するためのテーブルを指します。
Power BIでは、「いつ・どこで・誰が・何を」といった分析の切り口となるデータを持ちます。
ファクトテーブルとディメンションテーブルの比較は表1の通りです。
表1 ファクトテーブルとディメンションテーブルの比較
| 項目 | ファクトテーブル | ディメンションテーブル |
|---|---|---|
| 役割 | 集計したい 数値の実績データ | 数値を説明する 切り口 |
| 主な内容 | 売上金額、数量、回数など | 日付、商品名、カテゴリ、顧客名など |
| 重複 | 同じ値が何度も出てくる | 原則重複しない |
| スタースキーマでの位置 | 中心 | 周囲に配置 |
| 例 | 売上データ、注文データ | 日付マスタ、商品マスタ、顧客マスタ |
2.データ型
データ型とはその値が整数なのか?テキストなのか?等、その列がどのような値の種類や解釈 を持つかの定義を示すものとなります。 データ型は集計・表示・パフォーマンスの土台となります。値の表示だけでなく、集計方法や計算結果にも影響するため、設定が間違っていると「集計がおかしい」「日付で並ばない」といったトラブルの原因となります。Power BIでよく使われるデータ型は表2の通りです。
表2 Power BIでよく使われるデータ型
| 種類 | 内容 | 主な用途・例 |
|---|---|---|
| 数値型 | 整数や通貨等の数値データ 値の計算を行う |
売上金額、数量、回数、割合 |
| 日付/時刻型 | 日付、時刻のデータ | 取引日、受注日時、登録日 |
| テキスト型 | 文字列データ | 商品名、カテゴリ、ID・コード |
| True/False型 | TrueまたはFalseのどちらかを表すデータ | 有効フラグ、判定条件 |
▼データ型の設定方法
Power BIでは主に以下の2か所でデータ型を設定できます。・Power Query (Power BIがデータを取り込む前に設定)
・データビュー/モデルビュー(Power BIがデータを取り込んだ後に設定)
※Power Queryとは、様々なデータソースからデータを取得・結合・加工するツールで、ノーコードでデータ整形が出来る点と処理手順が「ステップ」として記録され、2回目以降のデータ取込は自動で同じデータ整形処理を実行する点が特徴です。
ただし、基本はPower Queryで行うべきとされており、その理由は以下となります。
- データの変換が上流であればあるほど、処理のパフォーマンスがあがるため
- BI での集計エラーを未然に防ぐため
- Power Query エディターは、データを分析用に整える場所であり、型の変換もデータ分析の前処理に該当するため
Power Queryでの設定方法は以下の通りです 。
1,リボンの [ホーム] - [データの変換] をクリックして、Power Query エディター を起動します。

2, データ型を変更したい列の見出し左側にあるアイコンをクリックします。
※列見出しの左に表示される データ型アイコンが現在の型を示しています。
ABC→テキスト型
123→整数型
カレンダーアイコン→日付型 など

3, 適切な型を選択します。
下記画像にある[Sales Price]列は販売価格(国外通貨)の情報のためテキスト型→固定小数点数型に変更しています。

4, 設定後、[閉じて適用] をクリックしてモデルに反映します。

3.列の追加
元データのまま分析しようとすると、目的の結果を得るために必要な特定のフィールドが含まれていない場合があります。このような場合、 Power BI側で分析に必要な列を追加する必要があります。Power BIにおける列はPower Query側で作成するカスタム列と、DAX側で作成する計算列の2種類あります。※Power BIではPower Queryで作った列を「カスタム列/条件列」と呼び、DAXで作った列を「計算列」と呼びます。
まずは、それぞれの列作成方法を解説します。
今回はテーブルに含まれている[Month Number]列の情報を基に[Quarter]列を作成します。
・[Month Number]が「1」「2」「3」であれば「1Q」と表示
・[Month Number]が「4」「5」「6」であれば「2Q」と表示
・[Month Number]が「7」「8」「9」であれば「3Q」と表示
・[Month Number]が「10」「11」「12」であれば「4Q」と表示
※本記事では操作説明のため単一テーブルで行います。
▼Power Queryから作成する方法
1,リボンの [ホーム] - [データの変換] をクリックして、Power Query エディター を起動します。2,[列の追加]タブをクリックし、[条件列]を選択します。
3,[新しい列名]と[条件]の項目をそれぞれ設定し、OKをクリックします。

▼Power BI Desktopから作成する方法
1, Power BI Desktopの左側メニューで「テーブル ビュー」を選択します。2, [ホーム]タブをクリックし、[新しい列]を選択します。

3, 数式バーに以下のDAX関数を入力し、✓マークをクリックします。
Quarter =
IF (
'financials'[Month Number] IN {1, 2 ,3}, "1Q",
IF (
'financials'[Month Number] IN {4, 5 ,6}, "2Q",
IF (
'financials'[Month Number] IN {7, 8 ,9}, "3Q",
IF (
'financials'[Month Number] IN {10, 11 ,12}, "4Q",
BLANK()
)
)
)
)
▼Power Queryカスタム列 vs DAX計算列
前述したように、Power BIでは列を作成する方法がPower Queryによるカスタム列とPower BI DesktopによるDAX計算列の2種類あります。どちらでも列を作成することができますが、使う場所を間違えると「モデルが複雑になる」、「パフォーマンスが悪くなる」といったケースが発生してしまいます。それぞれの違いを理解するために、列作成におけるPower QueryとPower BI Desktopの比較表を下記に記載します。
表3 列作成におけるPower Queryカスタム列とDAX計算列の比較
| 観点 | Power Queryカスタム列 | DAX計算列 |
|---|---|---|
| 実行場所 | データがモデルに入る前 | データがモデルに入った後 |
| 主な目的 | データ整形・変換 | データモデリング |
| 得意な用途 | データクリーニング、分割、結合、置換 | 他テーブルやリレーションを使った計算 |
| 代表的な例 | テキスト分割、値の置換、条件分岐 | 利益列、分類フラグ、参照値取得 |
列作成における一番簡単な判断ルールとして以下の理由からPower Query でできるなら、まずPower Queryでカスタム列を作成し、Power Queryで難しい場合のみPower BI DesktopからDAX計算列を作成するということをベースにすればパフォーマンスには困りません。
・Power BI DesktopからのDAX計算列はデータモデルに保存される
→列の数やデータ量が膨大になると、データモデルのサイズ肥大化やリフレッシュ処理の低下を招く原因になる
・データモデリングが単純になる。
→列が事前に確定していればDAXが簡単になり、不要なDAX計算が減る
・保守性/可読性が高い。
→「データ加工」と「分析ロジック」を分離でき、後から見た人にもデータ操作の意図が分かりやすい
4.値の置換
Power BIでデータを分析する際、元データがそのまま分析に適した形であるとは限りません。元データには、表記ゆれや意味のない値、分析に使えない特殊な文字列が含まれている可能性があります。例えば、「不明」「未設定」「-」といった値が混在していたり、同じ意味なのに表記が略称と正式名称で異なっていたりするケースです。このような状態のまま可視化や集計を行うと、正しい結果が得られなかったり、レポートが分かりにくくなったりする原因になります。
Power BIにおける値の置換とは、特定の値を別の値に置き換えるデータ変換のことを指します。この操作は、元のデータソースを直接変更するのではなく、Power Query上で変換処理として行われます。元データの内容を保ちながら、分析用に最適な形へ加工することが可能です。
今回は[Sales]列に含まれているnull値を0に置換する方法を解説します。
null 値を 0 に置換する理由として、値が null のままだと利益率といった計算を算出する際にエラーや異常値が発生してしまう可能性があり、それを防ぐためです。
※null→0置換を行うと、平均や件数の集計結果が変わるので、「nullの意味(データなし/売上ゼロ)を確認してから置換すること
▼値の変換方法
1, リボンの [ホーム] - [データの変換] をクリックして、Power Query エディター を起動します。2, 値の置換を行いたい列をクリックします。
3,[変換]タブをクリックし、[値の置換]をクリックします。

4.[検索する値]の項目に[null]と入力し、[置換後]の項目に[0]と入力してOKボタンをクリックします。

5.まとめ
本記事では、分析モデルを安定して構築するために、スタースキーマの概念、適切なデータ型の設定、列操作の考え方を整理しました。モデル設計をシンプルに保ち、正しいデータ型を選択したうえで、列作成は Power Query を優先し、必要な場合のみ DAX を使用することで、パフォーマンスと保守性の両立が可能になります。
分析結果に問題が生じた場合は、計算式以前に、これらの基礎設計を見直すことが有効です。
最後に
テンダでは、「こんなプロジェクトに挑戦したい」「こんなチームで働きたい」「理想のチームを創りたい」と願う仲間を求めています。
カジュアル面談も随時受付中です。ぜひ一度お話ししましょう。
募集職種一覧
カジュアル面談の申込
テンダで働く人や社風について







