Excel Power Query - фильтруйте строки, сравнивая два столбца - PullRequest
0 голосов
/ 28 октября 2019

У меня есть таблица в Excel, которая самостоятельно объединяется в Power Query Editor для создания пар

Table named Items
-----------------
Item   Value
A      1
B      2
C      3

Я создаю запрос From Table / Range, который закрыт и загружен только в соединение с именем "Items"

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Item", type text}, {"Value", Int64.Type}})
in
    #"Changed Type"

Затем выполняется другой запрос, который является рефлексивным перекрестным соединением

let
    Source = Items,
    #"Added Custom" = Table.AddColumn(Source, "Custom", each Items),
    #"Expanded Custom" = Table.ExpandTableColumn(#"Added Custom", "Custom", {"Item", "Value"}, {"Custom.Item", "Custom.Value"}),
    #"Renamed Columns" = Table.RenameColumns(#"Expanded Custom",{{"Custom.Item", "Item.2"}, {"Custom.Value", "Value.2"}, {"Value", "Value.1"}, {"Item", "Item.1"}}),
    #"Added Custom1" = Table.AddColumn(#"Renamed Columns", "Value", each [Value.1]*[Value.2])
in
    #"Added Custom1"

. В этот момент запрос показывает 9 строк (3x3) * 1012. *

Item.1 Value.1 Item.2 Value.2 Value
A      1       A      1       1
A      1       B      2       2
A      1       C      3       3
B      2       A      1       2
B      2       B      2       4
B      2       C      3       6
C      3       A      1       3
C      3       B      2       6
C      3       C      3       9

Я пытаюсь отредактировать запрос, чтобы он отфильтровал результаты до случаев value.1 <= value.2

Item.1 Value.1 Item.2 Value.2 Value
A      1       A      1       1
A      1       B      2       2
A      1       C      3       3
B      2       B      2       4
B      2       C      3       6
C      3       C      3       9

Интерфейс редактора Power Query, похоже, не предлагает x < y возможность фильтрации, и я не уверен, как использовать язык формул Power Query M для фильтрации данных так, как я хочу.

Microsoft Power Query предоставляет мощныйопыт импорта данных, который включает в себя множество функций. Power Query работает с книгами Analysis Services, Excel и Power BI. Основная возможность Power Query - фильтровать и объединять, то есть объединять данные из одного или нескольких богатых наборов поддерживаемых источников данных. Любое такое объединение данных выражается с использованием языка формул Power Query M. Это функциональный, чувствительный к регистру язык, похожий на F #.

Ответы [ 3 ]

2 голосов
/ 28 октября 2019

Добавить пользовательский столбец:

enter image description here

  • Фильтр True
  • Тогдаудалить пользовательский столбец

enter image description here

1 голос
/ 29 октября 2019

Пусть у нас есть таблица

enter image description here

Просто нажмите кнопку фильтра и выберите тип сравнения

enter image description here

Введите некоторое значение, например 1

enter image description here

Затем измените это значение на имя столбца, которое вы хотите сравнить с

enter image description hereenter image description here

let
    Source = #table({"col1", "col2"}, {{99,88}, {11,22}, {33,44}}),
    filter = Table.SelectRows(Source, each [col1] <= [col2])
in
    filter
0 голосов
/ 28 октября 2019

Я закончил редактирование запроса с помощью Расширенного редактора и использовал шаг #"Added Custom1" таблицу в Table.SelectRows для следующего шага.

let
    Source = Items,
    #"Added Custom" = Table.AddColumn(Source, "Custom", each Items),
    #"Expanded Custom" = Table.ExpandTableColumn(#"Added Custom", "Custom", {"Item", "Value"}, {"Custom.Item", "Custom.Value"}),
    #"Renamed Columns" = Table.RenameColumns(#"Expanded Custom",{{"Custom.Item", "Item.2"}, {"Custom.Value", "Value.2"}, {"Value", "Value.1"}, {"Item", "Item.1"}}),
    #"Added Custom1" = Table.AddColumn(#"Renamed Columns", "Value", each [Value.1]*[Value.2]),

добавил это

    #"Selected Rows" = Table.SelectRows(#"Added Custom1", each [Value.1] <= [Value.2]),
    #"Sorted Rows" = Table.Sort(#"Selected Rows",{{"Value", Order.Ascending}, {"Value.1", Order.Ascending}, {"Value.2", Order.Ascending}})
in
    #"Sorted Rows"
...