BI探検ノート

Power BI で重複を除いて数える方法(DISTINCTCOUNT)

約6分

濵口 翔長崎で、Power BI のつまずきを記録しています
目次
  1. 前提
  2. 手順
  3. 結果
  4. 練習用の CSV の「月」の列が、日付として読まれた
  5. COUNT は、テキストの列でも動いた
  6. 公式の記載との照合
  7. この記事で確認できたこと・できていないこと
  8. 参考

確認日2026年10月24日。Power BI Desktop(日本語版、2.159.883.0)で、ダミーのデータを使って確かめました。確認できていないことは、末尾にまとめました。

売上の明細には、同じ店舗が何度も出てきます。店舗の数を数えるとき、行を数えると、数が大きくなります。重複を除いて数えるには、DISTINCTCOUNT を使います。行を数える関数との違いを、確かめました。

結論(30秒版)

  • 30行(10店舗 × 3か月)の売上で、DISTINCTCOUNT(sales6[店舗]) は 10、COUNTROWS(sales6) は 30 でした。
  • COUNTA(sales6[店舗]) も COUNT(sales6[店舗]) も 30 でした。重複は除かれません。
  • 店舗の列(テキスト)に COUNT を使っても、エラーにはならず、30 が出ました。

前提

ダミーの売上(sales6、店舗・月・売上の3列、30行)です。店舗は10店舗で、各店舗に、1月〜3月の3行があります。

手順

  1. 練習用の CSV(sales_stores_months.csv、30行)を、Power BI Desktop に読み込みます。プレビューで、店舗・月・売上の3列が、30行あることを確認して、「読み込み」を押します。

CSV のプレビュー。店舗・月・売上の3列が見える

読み込むと、データペインに、テーブル名(sales_stores_months)が出ます。

データペインに、sales_stores_months が出ている

  1. 「ホーム」の「新しいメジャー」を押して、数式バーに、式を入れます。まず、行数です。

数式バーに、行数 = COUNTROWS ( sales_stores_months ) と入っている

  1. 同じように、「店舗の数」のメジャーを作ります。

数式バーに、店舗の数 = DISTINCTCOUNT ( sales_stores_months[店舗] ) と入っている

  1. 残りの2つ(COUNTA、COUNT)も作り、4つのメジャーにチェックを入れて、ビジュアルを「テーブル」にします。

(この練習問題の画面は、上のとおり、練習用の CSV(テーブル名 sales_stores_months)で撮り直したものです。下の式は、記事を最初に書いたときのテーブル名(sales6)のままです。テーブル名を、読み替えてください。)

「新しいメジャー」で、次の4つを作って、表のビジュアルに、並べました。

行数 = COUNTROWS ( sales6 )

店舗の数 = DISTINCTCOUNT ( sales6[店舗] )

店舗のCOUNTA = COUNTA ( sales6[店舗] )

店舗のCOUNT = COUNT ( sales6[店舗] )

結果

表のビジュアル。行数は30、店舗の数は10、店舗のCOUNTAは30、店舗のCOUNTは30

練習用の CSV で作り直した表も、同じ結果でした(行数 30、店舗の数 10、COUNTA 30、COUNT 30)。

練習用の CSV で作り直した表。30、10、30、30

メジャー結果
行数(COUNTROWS)30
店舗の数(DISTINCTCOUNT)10
店舗のCOUNTA30
店舗のCOUNT30

重複を除いて、「店舗が10」と分かるのは、DISTINCTCOUNT だけでした。ほかの3つは、行(空でない値)を数えるので、30 になりました。

練習用の CSV の「月」の列が、日付として読まれた

練習用の CSV(sales_stores_months.csv)の「月」の列は、CSV の中では、「1月」「2月」「3月」の文字です。ところが、Power BI に読み込むと、日付(2026/01/01、2026/02/01、2026/03/01)として読まれました(読み込みのプレビューで、そう出ていました)。

読み込みのプレビュー。月の列が、2026/01/01 のような日付の形で出ている

そのため、この「月」の列を、マトリックスの列に入れると、**年・四半期・月の階層で、英語の月名(January、February、March)**として、出ました。

マトリックス。店舗を行、月を列に入れた表。年 2026、四半期 1、January・February・March が並ぶ

この記事の「店舗の数」「行数」は、「店舗」の列だけを使うので、結果には、影響しません。ただ、「月」の列を、「1月」の文字のまま使いたいときは、読み込みのときに、型を「テキスト」にするか、Power Query で型を直す必要があります(この方法は、この記事では、確かめていません)。

COUNT は、テキストの列でも動いた

COUNT は、数字の列に使うものだと、私は、思っていました。しかし、テキストの店舗の列でも、エラーにならず、30 が出ました。Microsoft Learn の COUNT のページ(確認日 2026年10月24日)には、数えるのは、数字、日付、文字列、と書かれています。私の結果と合っています。

同じページには、論理値(TRUE/FALSE)は数えない、論理値やテキストを数えるときは COUNTA を、という趣旨の記載もあります。記載の中で、文字列の扱いが、少し食い違って見えます。私は、画面で出た結果(30)を、そのまま書いています。論理値の列は、試していません。

公式の記載との照合

Microsoft Learn(英語版、確認日 2026年10月24日)と、私の観察を、突き合わせました。

  • DISTINCTCOUNT: 列の、重複を除いた値の数を返す、と書かれています。どの型の列でも使えます。10 という結果と、合っています。
  • BLANK(空)の扱い: DISTINCTCOUNT は、BLANK も1つの値として数える、数えたくないときは DISTINCTCOUNTNOBLANK を使う、と書かれています。私のデータには、空がなかったので、試していません。
  • 合計の行: 公式には、DISTINCTCOUNT の合計は、足し算にならない(同じものが複数の区分に入るため)、と書かれています。私は、区分で分けた表では、試していません。

この記事で確認できたこと・できていないこと

確認日: 2026年10月24日。Power BI Desktop(Windows、日本語版、2.159.883.0、未サインイン)、ダミーの売上 30行(店舗 10)。

確認できたこと

  • DISTINCTCOUNT が 10、COUNTROWS・COUNTA・COUNT が 30 になること
  • テキストの列に COUNT を使っても、エラーにならず、行が数えられること

確認できていないこと

  • 空(BLANK)がある列での DISTINCTCOUNT と DISTINCTCOUNTNOBLANK の違い
  • 月や店舗で分けた表での、合計の行の動き(足し算にならないこと)
  • 論理値(TRUE/FALSE)の列での COUNT と COUNTA
  • 大きなデータでの速さ、DirectQuery
  • Power BI サービスでの動作、英語版での名称

参考

この記事で使った用語

Power BI Desktop
Windows で動く、レポートを作るためのアプリです。データの取り込みとモデルの作成、レポートの作成に向いています。

用語集をすべて見る