7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Excel版Power Queryでデータの追記処理

Last updated at Posted at 2020-07-26

#全体の概要
このネタを書こうと思う
image.png
この図の1~4はクエリの駆動順序を表しています

Power Queryはインメモリデータベースをexcelの外に作り
そこで制作したデータをEXCELに受け渡しをおこない
完了後にDBそのまま消去されます
逆に言えばEXCELはインメモリデータベース(a)の外に
テーブル形式でデータを保存する領域を持っているといえます
そしてそのテーブルの更新タイミング(④)はPower Queryの処理が完了した後に発生するために
②の過去の結果を取り込むという処理が可能になります

Power BIだと、Power Queryが動き始めた時点で
(a)(b)両方のデータが削除されるため再現できません

#作り方
今回の説明は外部データではなくexcelのセル上のデータを使います。
image.png
まずわかりやすいようにNOW関数で現在時刻をセル上に起きます(わかりやすいように1セルだけ入れます)
image.png
「テーブルまたは範囲から」でnow関数の入ったセルを取り込みを行います
image.png
このようにクエリをテーブルに書き出し
image.png
さらに(a)を書き出したテーブルをクエリで取り込みます
image.png
ここで

(a)のクエリに(b)のクエリを追加してやるとどうなるでしょうか?
image.png
そうすると
image.png
このように
赤い所が元データテーブルから読み込んだ最新の時刻
その下のデータは今まで更新ボタンを押した時刻になります

そしてクエリの更新設定から時間指定をしてやれば
image.png
image.png
そうすると
image.png
こんな感じに
ある程度定期的に更新しつつ前のデータを残して集めるということが割とできなくもありません

この自動取得状態に発生時間は
他の周りの動作次第で重ければ20~30秒ぐらい平気でずれるので
あんまりぴったり↓集計したい場合にはあまり使えません

##コード確認用ソース(使えない)
注:下記の物はコピペしても出力テーブルがないので動きません
なので、どのようなコードになってるかの確認用です

クエリ:(a)
let
    ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    変更された型 = Table.TransformColumnTypes(ソース,{{"列1", type datetime}}),
    追加されたクエリ = Table.Combine({変更された型, #"(b)"})
in
    追加されたクエリ
クエリ:(b)
let
    ソース = Excel.CurrentWorkbook(){[Name="a"]}[Content],
    変更された型 = Table.TransformColumnTypes(ソース,{{"列1", type datetime}})
in
    変更された型

#消し方
取得したデータをクリアしたい時は
aの結果クエリを消して、aのクエリにnullを削除するフィルタを追加ください

#(a)の取り込みデータにエラーがあった場合
image.png
①の取り込みが失敗すると④のテーブルの更新が行われないので
error前の状況で維持されます

読み込みファイルが他の人が開いていてエラーが出る
といった場合、それが終わってエラーが消えるまでテーブルは更新されません

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?