Power Query エディターでテーブルにフィルターを適用するときは、その条件をみっちり確認したほうがよいですよ
テーブルの行に対してフィルタリングをするとき、Excel ワークシート上の操作では気にすることはほぼ皆無なのだけど Power Query エディターの同じような操作ではそうでなかったりするのですよ。
どういうことか
テーブルに対しこのあと必要な行だけを抽出したい。
"A" と "B" と "C" だけを仲間にしたいのでそれらを選ぶ操作をした。
よしよし。
ソーステーブルにあらたな行"F"が現れた。
"F" も仲間に加わった。
なぜなのか
"選択"と"除外"という認識がなされていて、効率が良い方をPower Query エディターが決定している
しきい値は 50%
let
Source = #table(type table [Column1 = text],List.Transform({"A".."E"}, each {_})),
FilteredRows = Table.SelectRows(
Source,
each (
[Column1] = "A"
or [Column1] = "B"
)
)
in
FilteredRows
let
Source = #table(type table [Column1 = text],List.Transform({"A".."E"}, each {_})),
FilteredRows = Table.SelectRows(
Source,
each (
[Column1] <> "D"
and [Column1] <> "E"
)
)
in
FilteredRows
Table.SelectRows
Table.SelectRows( table as table, condition as function ) as table
条件関数を満たす行を選択します。
選択condition
と一致する行のテーブルをtable
から返します。
Returns a table of rows from thetable
, that matches the selectioncondition
.
条件関数 condition が変わるのです。
思ったこと🙄
Excel ワークシートのノリで作業をしたらだめですよ、という話。Power Query はあらかじめ全容を確認できるデータだけを扱うものではないので、得たい結果がどうあるべきなのかきちんと考えながらかな。
ほかにも Power Query エディターには 200 とか 1000 とかしきい値があるのでよーく観察して。
その他
おまけ
選択したいアイテム数が多くて Table.SelectRows の condition がとても長くなる時どうしたらよいのか。
List.Contains とか使うとよい。
let
Source = #table(type table [Column1 = text],List.Transform({"A".."E"}, each {_})),
FilteredRows = Table.SelectRows(
Source,
each List.Contains({"A", "B", "C"}, [Column1])
// each (
// [Column1] = "A"
// or [Column1] = "B"
// or [Column1] = "C"
// )
)
in
FilteredRows
Author And Source
この問題について(Power Query エディターでテーブルにフィルターを適用するときは、その条件をみっちり確認したほうがよいですよ), 我々は、より多くの情報をここで見つけました https://qiita.com/PowerBIxyz/items/53a35414cf62765c38e4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .