Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Заголовок первого уровня

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Заголовок второго уровня

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Заголовок третьего уровня

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Функция фильтрации.

Синтаксис

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
                ]
            ]
        }
    ]
}

Статьи по теме

📄 ссылка
📄 ссылка
📄 ссылка

На этой странице

Оглавление

🕑 Время чтения: 3 мин.


Видео


Нужна дополнительная помощь?

Свяжитесь с технической поддержкой.
Или нажмите (синяя звезда) в приложении, чтобы задать вопрос.