Power Queryを使ってフォルダ内のテキストファイルの中身を分析する - 分析編 -

はじめに

こちらの記事の続きとなります。

blog.jbs.co.jp

フォルダを読み込むところまでは進めたので、今回は読み込んだデータを分析します。

コンテンツ表示後の注意点

コンテンツ表示後、もともとフォルダを読み込んだ時の更新日時などの情報は変換処理がかかって使えなくなってしまいます。それらの活用したい場合は、別途読み込みなおす必要がありそうです。

今回はコンテンツ内だけ使いたいのでそのまま進めます。

条件列を使う

まず、foreachが使われているかのチェックをしたいと思います。条件列を使います。

foreachが含まれていたら1、そうでない場合は0を返すようにします。

一見うまく動いているのですが、今の状態だと大文字小文字を区別するため、本来抽出してほしいsample2.ps1が無視されてしまいます。

条件列の処理を選んだうえで、大文字小文字を無視するオプションを直接書いてしまいます。

変更前

= Table.AddColumn(#"名前が変更された列 ", "foreach", each if Text.Contains([Script], "foreach") then 1 else 0)

変更後(Comparer.OrdinalIgnoreCaseを追加)

= Table.AddColumn(#"名前が変更された列 ", "foreach", each if Text.Contains([Script], "foreach", Comparer.OrdinalIgnoreCase) then 1 else 0)

これで、「foreach」だけでなく「Foreach」も検出されました。

基本はこれだけです。ほかの分析したいキーワードがあれば同様に行います。

おわりに

残念ながら、少なくとも本記事を書いている2022/6/27時点では、Text.Containsをはじめ、Power Queryではワイルドカードを使った検索や、正規表現を使った検索はできないようです。

そのため、例えばText.Containsを使って「if」の入った文章を検索すると、elseisもwhatifも検索で引っ掛かってしまいます。

Excelでも正規表現はアドオンやマクロに頼る必要があるみたいですが、ワイルドカードなどは使えます。

なので、今回はPower Queryで検索をしましたが、読み込みまではPower Queryを使い、検索はExcelに任せた方がいいケースも多いと思います。ケースバイケースで使い分けてください。

投稿者プロフィール
舟越 匠

舟越 匠

人材戦略部に所属。社内向けの技術研修をメインにしつつ、JBS Tech BlogやMS認定資格取得の推進役もやっています。資格としてはAzure Solutions Architect Expertを所持。Power AutomateやLogic Appsで楽をするのが好きです。

執筆記事一覧