Сравнение версий
Ключ
- Эта строка добавлена.
- Эта строка удалена.
- Изменено форматирование.
Функция фильтрации.
Синтаксис
FILTER ( <Table>, <FilterExpression> )
Предупреждение
Поддерживается IN и AND.
IN поддерживает работу на схеме звезда в случае использования с SUMMARIZECOLUMNS (см. пример ниже).
Не поддерживается вложенность.
IN поддерживает только строки: FILTER ( 'Sales', 'Sales'[ProductCategory] IN { "Audio", "Computers" } )
.
AND поддерживает следующие операции сравнения >, <, >=, <=, =, <>. Поддерживается работа с числами FILTER (Sales, AND(Sales[SalesQuantity] <> 150, Sales[SalesAmount] > 1500))
и DATE.
Поддерживается работа только с CALCULATE и SUMMARIZECOLUMNS
Примеры
Предупреждение
Разница в работе PowerBI и FormulaEngine
С моделью данных можно ознакомиться по ссылке pbix
Блок кода |
---|
EVALUATE SUMMARIZECOLUMNS ( 'dimproduct'[classname], 'dimcustomer'[gender], FILTER ( 'dimcustomer', 'dimcustomer'[gender] IN { "M" } ), FILTER ( 'dimproduct', 'dimproduct'[classname] IN { "Econom" } ), FILTER ( 'factonlinesales', AND ( 'factonlinesales'[unitprice] > 50, 'factonlinesales'[unitprice] < 200 ) ), "Result", CALCULATE ( SUM ( 'factonlinesales'[unitprice] ), REMOVEFILTERS ( 'dimcustomer' ) ) ) |
Результат PowerBI DAX:
classname | gender | Result |
---|---|---|
«Econom» | «M» | 100 |
Результат FormulaEngine DAX:
classname | gender | Result |
---|---|---|
«Econom» | «M» | 200 |
Результат FormulaEngine DAX идентичен результату PowerBI DAX в случае использования FILTER в совокупности с функцией VALUES (см. пример ниже).
Блок кода |
---|
EVALUATE SUMMARIZECOLUMNS ( 'dimproduct'[classname], 'dimcustomer'[gender], FILTER ( 'dimcustomer', 'dimcustomer'[gender] IN { "M" } ), FILTER ( 'dimproduct', 'dimproduct'[classname] IN { "Econom" } ), FILTER ( VALUES ( 'factonlinesales'[unitprice] ), // обратите внимание AND ( 'factonlinesales'[unitprice] > 50, 'factonlinesales'[unitprice] < 200 ) ), "Result", CALCULATE ( SUM ( 'factonlinesales'[unitprice] ), REMOVEFILTERS ( 'dimcustomer' ) ) ) |
Данное поведение в будущем может поменяться с появлением функции VALUES и TREATAS.
Пример работы на денормализованной таблице:
Блок кода |
---|
EVALUATE SUMMARIZECOLUMNS ( 'Sales'[BrandName], 'Sales'[Calendar Year], FILTER ( 'Sales', 'Sales'[Calendar Year] IN { "2012" } ), FILTER ( 'Sales', 'Sales'[ProductCategory] IN { "Audio" } ), FILTER ('Sales', AND(Sales[SalesQuantity] <> 150, Sales[SalesAmount] > 1500)), "Amount", SUM ( Sales[SalesAmount]) ) |
Блок кода |
---|
"results": [ { "cols": [ { "field": "BrandName", "dataType": "String" }, { "field": "Calendar Year", "dataType": "String" }, { "field": "Amount", "dataType": "Double" } ], "values": [ [ "Contoso", "2012", 14949935 ], [ "Northwind Traders", "2012", 1610125 ], [ "Wide World Importers", "2012", 18429107 ] ] } ] |
Пример работы на схеме звезда:
Блок кода |
---|
EVALUATE SUMMARIZECOLUMNS ( dimproduct[colorname], dimcustomer[gender], FILTER ( dimproduct, dimproduct[colorname] IN { "Azure" } ), "result", SUM ( factonlinesales[salesamount] ) ) |
Блок кода |
---|
"results":[ { "cols":[ { "field":"colorname", "dataType":"String" }, { "field":"gender", "dataType":"String" }, { "field":"result", "dataType":"Double" } ], "values":[ [ "Azure", null, 78083.037 ], [ "Azure", "F", 1417.615 ], [ "Azure", "M", 540.14 ] ] } ] |
Использование функции FILTER для лимитирования:
Блок кода |
---|
DEFINE VAR GeneralGroupBy = SUMMARIZECOLUMNS ( 'Sales'[ProductCategory], 'Sales'[ProductSubcategory], 'Sales'[BrandName], "cost", SUM ( 'Sales'[SalesAmount] ) ) VAR GroupByCategorySubcatory = SUMMARIZE ( GeneralGroupBy, 'Sales'[ProductCategory], 'Sales'[ProductSubcategory] ) VAR TopByCategorySubcatory = TOPN ( 5, GroupByCategorySubcatory, 'Sales'[ProductCategory], ASC, 'Sales'[ProductSubcategory], ASC ) VAR GroupByBrand = SUMMARIZE ( GeneralGroupBy, 'Sales'[BrandName] ) VAR TopByBrand = TOPN ( 5, GroupByBrand, 'Sales'[BrandName], ASC ) EVALUATE TopByCategorySubcatory ORDER BY 'Sales'[ProductCategory] ASC EVALUATE FILTER ( GeneralGroupBy, AND ( ( 'Sales'[ProductCategory], 'Sales'[ProductSubcategory] ) IN TopByCategorySubcatory, ( 'Sales'[BrandName] ) IN TopByBrand ) ) |
Блок кода |
---|
{ "results": [ { "cols": [ { "field": "ProductCategory", "dataType": "String" }, { "field": "ProductSubcategory", "dataType": "String" } ], "values": [ [ "Audio", "Bluetooth Headphones" ], [ "Audio", "MP4&MP3" ], [ "Audio", "Recording Pen" ], [ "Cameras and camcorders", "Camcorders" ], [ "Cameras and camcorders", "Cameras & Camcorders Accessories" ] ] }, { "cols": [ { "field": "ProductCategory", "dataType": "String" }, { "field": "ProductSubcategory", "dataType": "String" }, { "field": "BrandName", "dataType": "String" }, { "field": "cost", "dataType": "Double" } ], "values": [ [ "Audio", "MP4&MP3", "Contoso", 65168188 ], [ "Cameras and camcorders", "Cameras & Camcorders Accessories", "Contoso", 51599808 ], [ "Cameras and camcorders", "Camcorders", "Fabrikam", 1335285231 ] ] } ] } |
Статьи по темеСмотрите также
📄 ссылка Поддерживаемые функции DAX
📄 ссылка
📄 ссылка Математические операторы
На этой странице
Оглавление |
---|
🕑 Время чтения: 3 мин.
Видео
Нужна дополнительная помощь?
Свяжитесь с технической поддержкой.
Или нажмите в приложении, чтобы задать вопрос.