[[20211027125800]] 『パワークエリ 重複データは一行にまとめる』(Excel初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『パワークエリ 重複データは一行にまとめる』(Excel初心者)

最近パワークエリの勉強を始めた者です。
以下のように商品データがあります。
複数行に分かれている重複する[商品ID]の場合は[購入者]をカンマ区切りで一行にまとめたいです。いろいろと検索して試したのですがエラーが出てしまいうまくいきません。どなたかよい方法を教えていただけないでしょうか。
データ量が多いため、なんとかパワークエリで実施したいです。

元データ:
[商品ID] [購入日] [購入者]
111    2021.10 Aさん
222    2021.10 Aさん
222    2021.10 Bさん
333    2021.10 Aさん
333    2021.10 Bさん
333    2021.10 Cさん

作りたい形:
[商品ID] [購入日] [購入者]
111    2021.10 Aさん
222    2021.10 Aさん,Bさん
333    2021.10 Aさん,Bさん,Cさん

< 使用 Excel:Office365、使用 OS:Windows10 >


 こんな感じではどうでしょう 
 let
    ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    変更された型 = Table.TransformColumnTypes(ソース,{{"[商品ID]", Int64.Type}, {"[購入日]", type number}, {"[購入者]", type text}}),
    グループ化された行 = Table.Group(変更された型, {"[商品ID]", "[購入日]"}, {{"カウント", each Text.Combine([#"[購入者]"],","), type text}})
 in
    グループ化された行

(´・ω・`) 2021/10/27(水) 13:22


早々にありがとうございます!
ただ私がまだまだパワークエリを理解できていないため、再度詳しく教えていただけますか。
以下の方法で実施したのですがうまくいきませんでした。。。

変更された型 = Table.TransformColumnTypes(ソース,{{"[商品ID]", Int64.Type}, {"[購入日]", type number}, {"[購入者]", type text}}),
 >[商品ID]を数値型に、[購入日]と[購入者]をテキスト型に変換

グループ化された行 = Table.Group(変更された型, {"[商品ID]", "[購入日]"}, {{"カウント", each Text.Combine([#"[購入者]"],","), type text}})
 >[商品ID]、[購入日]、[購入者]をグループ化(操作=すべての行)
 >each _, type table 移行を『each Text.Combine([#"[購入者]"],","), type text}})』に書き換え

この方法だと作成されたカウント列に[購入者]が表示されるだけで、商品IDごとの[購入者]がカンマ区切りでは表示されませんでした。

何が原因なのでしょうか。。。
(Excel初心者) 2021/10/27(水) 17:16


 グループ化するときに、[商品ID]と[購入日]の列を選択してグループ化してください 
 >[商品ID]、[購入日]、[購入者]をグループ化(操作=すべての行)
 3列ともグループ化してはいけません
(´・ω・`) 2021/10/27(水) 20:21

ご丁寧にありがとうございます。
また、返信が遅くなり申し訳ございません。

グループ化するときに、[商品ID]と[購入日]の列を選択してグループ化してください 
 >ご指摘の通りグループ化をした後、以前と同様にeach _, type table 移行を『each Text.Combine([#"[購入者]"],","), type text}})』に書き換えを試みましたがエラーとなってしまいました。(Expression Error:テーブルの列「購入者」が見つかりませんでした)

 ご指摘のText.Combineをカスタム列からの記述も試みましたが、ここでも使用できる列に「購入者」が表示されていないため同様のエラーが出ました。

実際のデータはお伝えした3つの項目の他にも複数あるのですが、それが原因でしょうか。

(Excel初心者) 2021/11/02(火) 08:59


 列の名前は 購入者 ですか [購入者] ですか?
 セルに [購入者]と入ってるなら前のとおり、
 セルに 購入者 と入っているなら以下で

 let
    ソース = Excel.CurrentWorkbook(){[Name="テーブル4"]}[Content],
    変更された型 = Table.TransformColumnTypes(ソース,{{"商品ID", Int64.Type}, {"購入日", type number}, {"購入者", type text}}),
    グループ化された行 = Table.Group(変更された型, {"商品ID", "購入日"}, {{"カウント", each Text.Combine([購入者],","), type text}})
 in
    グループ化された行
(´・ω・`) 2021/11/02(火) 09:18

https://exceltown.com/en/tutorials/power-bi/powerbi-com-and-power-bi-desktop/power-bi-data-sources/group-by-to-merge-texts-something-like-concatenatex-but-in-queries/

(マナ) 2021/11/02(火) 22:35


ありがとうございます!
ご指摘の通り、列名の []が問題だったようです。
貼り付けていただいたリンク先も大変参考になりました、ありがとうございます。
グループ化タブのあとにカスタム列の方から試みることはできないのですね、大変勉強になりました。

図々しくて大変恐縮ですが、もう1点教えていただけないでしょうか。
もし、このカンマ区切りにしたい列がもう一列あった場合、それも列を追加してカンマ区切りで表示できるのでしょうか。

上記の例でいうと、

元データ:
[商品ID] [購入日] [購入者]  [コメント]
111    2021.10  Aさん    うまい
222    2021.10  Aさん    うまい
222    2021.10  Bさん    まずい
333    2021.10  Aさん    うまい
333    2021.10  Bさん    まずい
333    2021.10  Cさん    ふつう
作りたい形:
[商品ID] [購入日] [購入者]     [コメント]
111    2021.10  Aさん       うまい
222    2021.10  Aさん,Bさん    うまい、まずい
333    2021.10  Aさん,Bさん,Cさん うまい、まずい、ふつう

教えていただいた方法で試みたのですが、うまくいかなかったので、
同じデータを二つ作り、[購入者]と[コメント]をマージでつなげるという力技になってしまいました。

よろしくお願いします。
(Excel初心者) 2021/11/04(木) 05:42


 1) 商品ID と 購入日 の列を選択して、グループ化
 2) 新しい列名に、集計を追加 して2行にする
    列名は任意。 
   新しい列名        操作        縦棒
    [購入者の集約]   [合計]    [ 購入者 ]
    [コメントの集約] [合計]    [コメント]
 3) List.Sum([購入者])を Text.Combine([購入者],",") 、List.Sum([コメント])を Text.Combine([コメント],",")に書き換え

 let
    ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    変更された型 = Table.TransformColumnTypes(ソース,{{"商品ID", Int64.Type}, {"購入日", type number}, {"購入者", type text}, {"コメント", type text}}),
    グループ化された行 = Table.Group(変更された型, {"商品ID", "購入日"}, {{"購入者の集約", each Text.Combine([購入者],","), type text}, {"コメントの集約", each Text.Combine([コメント],","), type text}})
 in
    グループ化された行
(´・ω・`) 2021/11/04(木) 09:16

>グループ化タブのあとにカスタム列の方から試みることはできないのですね、

意味が???
数式バーの編集ではない方法ということであれば
↓の Chiquilinさんの回答
https://excelfactory.net/excelboard/exgeneral/excel.cgi?mode=all&namber=131816&rev=0

(マナ) 2021/11/04(木) 11:03


>(´・ω・`)さん
返信が遅くなってしまい、申し訳ございません。
無事にコメントもできました!!
ご丁寧に手順を記載いただき、分かりやすかったです。
今回グループ化の活用方法について、とても勉強になりました。
ありがとうございます。

>マナさん
分かりづらくて申し訳ございません。
当方はカスタム列からText.Combine([購入者],",")を入力を試みていたのですが、
お示しいただいたリンク先では数式―バで入力を指示していたので、こちらが正しいやり方なんだなと勉強になりました。

(Excel初心者) 2021/11/11(木) 14:06


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.