[[20220714161454]] 『パワークエリ:グループ化のあと展開するときにデ』(まっち) ページの最後に飛ぶ

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

 

『パワークエリ:グループ化のあと展開するときにデータ型を変更しない方法の有無』(まっち)

テーブルの特定の列のデータが他をテキストや日付に変更した後、
グループ化して、インデックスなどを付与等の処理した後に、展開すると
データ型が元に戻ってしまう。
(データ型の自動処理かしら?主にtype anyになるので・・・。)

展開後に、同じことを繰り返して(テーブルの特定の列のデータが他を
テキストや日付に変更)対応していますが、何か妙案はないものでしょうか。

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


グループ化する時にタイプ指定を抜いているからでは?
(d-q-t-p) 2022/07/15(金) 06:53

ご連絡ありがとうございます。

    連番    品目    値
1    1     あ     10
2    2     い     20
3    3     う     30

というテーブルがあったとして、以下のようなクエリをすると、すべての列がtype anyになるのです。

let

    ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    データ型整備 = Table.TransformColumnTypes(ソース,{{"値", Int64.Type}, {"連番", Int64.Type}, {"品目", type text}}),
    グループ化された行 = Table.Group(データ型整備, {"品目"}, {{"カウント", each _, type table}}),
    削除された他の列 = Table.SelectColumns(グループ化された行,{"カウント"}),
    #"展開された カウント" = Table.ExpandTableColumn(削除された他の列, "カウント", {"連番", "品目", "値"}, {"連番", "品目", "値"})
in
    #"展開された カウント"

データ型整備で、データ型をテキスト等に変更した後
グループ化された行で、品目でグループ化して
削除された他の列で、元の品目の列を削除して、

 #"展開された カウント"で、テーブルを全部展開すると
すべての列がtype anyになるのです。

「グループ化する時にタイプ指定を抜いている」とのご助言をいただきました。
大変申し訳ございませんが、グループ化する時にタイプ指定する例文を教えていただけないでしょうか。

{"品目", each Table.RowCount(_), type number}みたいにテーブル化する項目をどのように指定するのか模索中です。
(まっち) 2022/07/15(金) 08:54


let
    ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    行のグループ化 = Table.Group(ソース, {"品目"}, {"グループ", each _, type table [連番=Int64.Type, 品目=Text.Type, 値=Int64.Type]}),
    列の選択 = Table.SelectColumns(行のグループ化,{"グループ"}),
    列の展開 = Table.ExpandTableColumn(列の選択, "グループ", {"連番", "品目", "値"})
in
    列の展開
(d-q-t-p) 2022/07/15(金) 09:32

ありがとうございます。
大変たすかりました。
(まっち) 2022/07/15(金) 09:40

 メモメモ....φ(・ω・` )

 M言語の型
https://docs.microsoft.com/ja-jp/powerquery-m/m-spec-types
(´・ω・`) 2022/07/15(金) 10:34

ありがとうございます。
いろいろ勉強しながら試行錯誤中です。

今は、グループ化だけじゃなく
Table.AddColumn
でも、データ型が指定できるのでは・・・。といろいろ試しています。
(まっち) 2022/07/15(金) 10:50


問題ない例
Table.AddColumn(ソース, "今月1日", each DateTime.Date(Date.StartOfMonth(Date.AddMonths(DateTime.LocalNow(),0))),type date),
でやると特に問題ないのですが、

なぜか問題ありの例
Table.AddColumn(ソース, "今月末日", each Date.EndOfMonth(DateTime.LocalNow()),type date)
でやると、type datetimeになり、しかもシートの方のセルがnullになります。
(パワークエリエディタ上では、2022/8/1 0:00:00と表示されているのに・・・。)

(まっち) 2022/07/15(金) 11:42


 いつもいつも説明が不足してます。何が問題なのか説明してください。

 同じようにDateTime.Date でdatetimeからdateに変換すればいいでしょう?
(´・ω・`) 2022/07/15(金) 12:00

申し訳ございません。
今、システム室から連絡があり、使っているシンクライアントの処理が遅くなっていたとのこと。

シートの方のセルがnullになっていたのは、単に画面更新が固まっていたからでした。
ちゃんとtype dateで変換できていました。

今後は、わからない状態でも、1日以上チャレンジしてみてから、記述するようにします。
(まっち) 2022/07/15(金) 12:23


 >1日以上チャレンジしてみてから
 別に自分である程度しらべてから質問しないといけないと考えているわけではありません

 (1)やりたいこと
 (2)やったこと
 (3)結果、期待してることとの相違点

 この3点をちゃんと書いてくださいといっています。
 「問題あり」とだけ書かれてて、何を問題と考えているか読み取れません
(´・ω・`) 2022/07/15(金) 12:34

了解です。
以後、気を付けます。
(まっち) 2022/07/15(金) 13:51

コメント返信:

[ 一覧(最新更新順) ]


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