回答編集履歴

2

2024/06/27 13:24 のコメントを受けて追記。

2024/06/27 05:59

投稿

sk.exe
sk.exe

スコア938

test CHANGED
@@ -43,3 +43,35 @@
43
43
  in
44
44
  AddedConditionalColumn
45
45
  ```
46
+
47
+ ### 2024.06.27 14:59 追記
48
+
49
+ > 詳細エディターは以下のようになっています。
50
+
51
+ 現在のクエリに合わせるなら次のようになさればよいでしょう。
52
+
53
+ ```PowerQuery
54
+ let
55
+ //除外ワードを含むか否かを判定する関数を作る
56
+ IsExcluded = (Expression as text) =>
57
+ let
58
+ //テーブル[除外ワードリスト]の[除外ワード]列に、引数 Expression に渡されたテキストと部分一致する要素が存在する場合は true を、存在しない場合は false を返す
59
+ Judgement = List.MatchesAny(除外ワードリスト[除外ワード], each Text.Contains(Expression,_))
60
+ in
61
+ Judgement,
62
+ //ワークブックの参照
63
+ ソース = Excel.Workbook(File.Contents("C:\Users\My_Data\アクセス履歴\Test\新しいフォルダー\全ユーザー結果_01.xlsm"), null, true),
64
+ //ワークシートの参照
65
+ データ_Sheet = ソース{[Item="データ",Kind="Sheet"]}[Data],
66
+ //1行目をヘッダー行として使用
67
+ 昇格されたヘッダー数 = Table.PromoteHeaders(データ_Sheet, [PromoteAllScalars=true]),
68
+ //各列のデータ型を変換
69
+ 変更された型 = Table.TransformColumnTypes(昇格されたヘッダー数,{{"アクセス日時", type datetime}, {"ユーザー", type text}, {"コンテンツの場所", type text}}),
70
+ //それぞれのレコードの[コンテンツの場所]の値を上記の IsExcluded 関数によって評価した結果を新たなカスタム列として追加する
71
+ 追加されたカスタム = Table.AddColumn(変更された型, "いずれかの除外ワードを含んでいる", each IsExcluded([コンテンツの場所]))
72
+ in
73
+ 追加されたカスタム
74
+ ```
75
+ > これだと2つのクエリに分かれてしまうので、1つのクエリの中で判定できるようにしたいです。
76
+
77
+ 他のクエリ上でも同様の処理を実行する可能性があるならば、別途 IsExcluded で行なっている処理を切り出して**カスタム関数**として作成した上、任意のクエリ上から呼び出すようにされた方が使い勝手が良いと思います。

1

List.MatchesAny 関数を用いた例を追加しました。

2024/06/26 07:08

投稿

sk.exe
sk.exe

スコア938

test CHANGED
@@ -24,3 +24,22 @@
24
24
  in
25
25
  AddedConditionalColumn
26
26
  ```
27
+
28
+ IsExcluded の各ステップに関しては、[List.MatchesAny 関数](https://learn.microsoft.com/ja-jp/powerquery-m/list-matchesany)を用いて 1 つにまとめてもよいでしょう。
29
+
30
+ ```PowerQuery
31
+ let
32
+ //除外ワードを含むか否かを判定する関数を作る
33
+ IsExcluded = (Expression as text) =>
34
+ let
35
+ //テーブル[除外ワードリスト]の[除外ワード]列に、引数 Expression に渡されたテキストと部分一致する要素が存在する場合は true を、存在しない場合は false を返す
36
+ Judgement = List.MatchesAny(除外ワードリスト[除外ワード], each Text.Contains(Expression,_))
37
+ in
38
+ Judgement,
39
+ //評価対象となるテーブルを参照
40
+ Source = アクセスリスト,
41
+ //それぞれのレコードの[コンテンツの場所]の値を上記の関数によって評価した結果を新たな列として追加する
42
+ AddedConditionalColumn = Table.AddColumn(Source, "いずれかの除外ワードを含んでいる", each IsExcluded([コンテンツの場所]))
43
+ in
44
+ AddedConditionalColumn
45
+ ```