Сравнение версий
Ключ
- Эта строка добавлена.
- Эта строка удалена.
- Изменено форматирование.
Функция фильтрации.
Синтаксис
Предупреждение
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
]
]
}
]
}
|
Статьи по теме
На этой странице
Оглавление |
---|
🕑 Время чтения: 3 мин.
На этой странице
Оглавление |
---|
Нужна дополнительная помощь?
Свяжитесь с технической поддержкой.
Или нажмите в приложении, чтобы задать вопрос.