DAX>COUNTROWS関数でデータが重複している行を抽出|IT小技1

課題解決のイメージ図
目次

この記事で分かること

リレーションシップ作成中に遭遇するエラー「このリレーションシップのカーディナリティは多対多です・・・」の解決方法

マスターテーブルのキー列(ID番号など)の中で、データが重複している行を見つける方法

COUNTROWS関数とFILTER関数の実践的な使い方

課題|マスタデータ重複が起因するエラー解決

今回の課題は以下のようなケースで、マスタテーブルのデータが重複している行を抽出することです。

日毎の売上個数に、商品マスタから取得した商品名や単価を組み合わせて、商品ごとの売上高を計算することを想定します。

商品マスタと売上個数テーブルは項目「ID」をキー列としてリレーションシップを形成します。

商品マスタテーブル

商品マスタテーブルのレイアウト画面

売上個数テーブル

売上個数テーブルのレイアウト画面

PowerBIでのリレーションシップ作成中に下の画面赤枠部分のような「このリレーションシップのカーディナリティは多対多です・・・」というエラーに遭遇することはないでしょうか?

リレーションシップ作成時に発生するエラー画面

このエラーはマスターテーブルのキー列の中で、値が重複している行が存在していることを意味します。よって重複行を見つけるのがエラー解消の第一歩です

しかし数行のテーブルならともかく、数百行とか数千行のテーブルなら、重複行の発見は可能でしょうか?キー列を昇順に並び替えて重複行を一行ずつ目視チェック?・・・それは時間がかかりますね。

実は、PowerBIならDAX関数式を一つ追加すれば簡単に解決できるんです。今回はそのDAX関数式と計算ロジック、PowerBI上での実際の解決方法をご説明します。

答え

DAX関数式

データ重複回数=
 var currentRow=[ID]
 Return
  COUNTROWS(
    FILTER(
      ’商品マスタ’,
     [ID]=currentRow
    )
  )

解決策

商品マスタに新しい列を作り、上記のDAX関数式を入力します。

下図のように、テーブルビューで商品マスタテーブルを選択し、「データ重複回数」が2以上 でフィルタリングします。そしてキー列(列名:ID)を昇順に並び替えれば重複した値が見つかります。

「答え」で実施する処理画面

解説

全体の処理

この関数式はマスターテーブルのキー列の各行について、重複した値が何個あるか数えて戻り値として返します。

1行目のDAX関数式の戻り値を例に取ります。重複がなければ、1行目の戻り値は1です。重複があれば、例えば1行目と15行目と41行目の値が重複していれば、1行目の戻り値は3です。

同様に2行目の戻り値は、2行目以外と重複した値の個数を返します。同様に最終行まで戻り値を計算します。

各関数の処理

FILTER関数での処理

1行目を例に取ります。1行目のキー列の値を変数currentRowに格納して、currentRowと一致した行のみを抽出したテーブルを戻り値として返します。

重複がなければ1行目のキー列のみを抽出したテーブルを返します。

同様に2行目から最終行までテーブルを返します。

COUNTROWS関数での処理

FILTER関数が生成したテーブルの行数をカウントします。戻り値は各行の重複回数です。

まとめ

以上、テーブル内の指定した列に関して、重複データを抽出する方法を説明しました。

マスターテーブルのキー列の中で、どのキー値が重複しているか知りたい時に便利なテクニックです。

式の計算ロジックは少々難解ですが、各行の値を変数に格納して、その行と重複した行数を数える、というのがポイントです。

少しでもPowerBI上達に役立てれば幸いです。(終わり)

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

“ねこまご”は、猫の癒しと“孫の手”の実務サポートを合わせた造語です。
Power BI と IT 業務の“こまごま解決”に特化した、実務者向けブログを運営しています。

社内SEを約10年経験した後、2025年にブログ開設しました。
日々の現場で発生する"細かなIT課題"に向き合ってきた中で、
「専門用語なしで理解したい」
「実務でどう使うかを知りたい」
「時間がない中でも効率よく学びたい」
というニーズを強く感じてきました。

私自身、家事・育児・家族サービス・仕事の合間で学び続けている生活者です。限られた時間の中でスキルを磨いていく大変さや、思うように勉強が進まないもどかしさもよく分かります。

だからこそ、このブログでは、
1) Power BI などのITツールのTips(IT小技シリーズ)
2) 初心者でも挫折しないPower BI講座
3) リアルなブログ運営記録(将来的に配信予定)
を、できるだけシンプルに、すぐ実務で使える形にして発信しています。

難しい専門用語を避け、「すぐ役立つITスキル」を届けることを大切にしています。

ITは一気に習得するより、小さな疑問をひとつずつ解消していくことが近道だと考えます。

その“かゆいところに手が届く”存在として、実務力向上やキャリアアップに悩む読者の力になれるブログを目指しています。

コメント

コメントする

CAPTCHA


目次