クエリの中で複数のキーを指定して抽出したい時、抽出用リストがある場合はそれを利用するにこしたことはない。
例えば「リストの値と等しい行を抽出したい」場合は、Table.SelectRowsの条件を下記のように記述すればいい。
each List.Contains(
{"中央区", "西淀川区", "東淀川区", "住吉区", "東住吉区"}, [行政区名]
)
ただこれを「中央」「淀川」「住吉」を指定して、「リストの値を含む行を抽出したい」場合は、List.Containsでは上手くいかない。
この場合、ひとつには抽出条件に List.Accumulateを使う方法が考えられる。
(x)=> List.Accumulate(
List.Transform(
{"中央", "淀川", "住吉"},
each x[支店名]="東京" and Text.Contains(x[行政区名], _)
),
false,
(x,y)=>x or y
)
これでいいんだけど、なんとなくしっくりこない。
ちょっと考え方を変えて、Splitter.SplitTextByAnyDelimiterで「リストの文字列で区切れるかどうか」をチェックしてみたらどうだろうか。
each [支店名]="東京"
and List.Count(
Splitter.SplitTextByAnyDelimiter(
{"中央", "淀川", "住吉"}
)([行政区名])
)>1
こっちのほうが分かりやすい気がする。