LoginSignup
1
0

More than 5 years have passed since last update.

PowerQueryのログファイルから所要時間?を取ってみたけど不満足な話

Posted at

今まで,ログファイルの頭とお尻の時刻を比較してましたが,それを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」で,フォルダも別。

1
0
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
1
0