Сравнение версий
Ключ
- Эта строка добавлена.
- Эта строка удалена.
- Изменено форматирование.
Функция фильтрации.
Синтаксис
Предупреждение
FILTER ( <Table>, <FilterExpression> )
Примечание |
---|
|
IN поддерживает работу на схеме звезда в случае использования с 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 (
|
Пример
Блок кода | ||
---|---|---|
| ||
CALCULATE ( SUM ( 'factonlinesales'Sales[unitpriceSalesAmount] ), 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
📄 Поддерживаемые функции DAX
📄 Математические операторы
На этой странице
Оглавление |
---|
🕑 Время чтения: 3 мин.
ВидеоНужна дополнительная помощь?
Свяжитесь с технической поддержкой.
Или нажмите в приложении, чтобы задать вопрос.