今まで,ログファイルの頭とお尻の時刻を比較してましたが,それをPower Queryで読みに行ってみたという話です。
ですが,そもそもログファイルの頭とお尻を読むだけじゃ,トレース開始から終了までの時間でしかなく,実行部分の時間ではない,という感じがしたので,お蔵入りかなと。
挑戦する方の踏み台になればと思い,書き残します。
####コード実行前の準備
「トレースフォルダパス」という名前のパラメータを作り,トレースフォルダのパスを入れておいてください.Excelなら
「C:~\AppData\Local\Microsoft\Office\16.0\PowerQuery\Traces」
のような具合のはず。
####コード
対象とするファイルパス名を引数とした関数です。(下記コードではクエリ側で拡張子付けるようにしてます)
ログファイルの最初と最後の時刻差を返します。
(拡張子抜きファイル名 as text)=>
let
ソース = Csv.Document(File.Contents(トレースフォルダパス &"\"& 拡張子抜きファイル名 & ".log"),5,"",null,932),
時刻取得関数=(行番号 as number)=>
let
欲しい部分をリスト化 = Text.Split(ソース{行番号}[Column5],","),
時刻文字列 = Text.BetweenDelimiters(欲しい部分をリスト化{0},"T",".")
in
Duration.FromText(時刻文字列),
データ行数= List.Count(ソース[Column5])-1,
所要時間= 時刻取得関数(データ行数)-時刻取得関数(0)
in
所要時間
####試した環境
Windows7 64bit
Excel(Office365)バージョン1902(32ビット)
PowerQueryのバージョン 2.66.5376.1622 32 ビット
####注意点
#####・トレースの仕方
クエリオプション―診断―「トレースを有効にする」のチェックボックスで,ON/OFFを切り替えられる。
#####・ログファイル
Excel:「EXCEL.~.log」
※Power BI Desktopだと「PBIDesktop.~.log」で,フォルダも別。