首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有IF函数的PowerBI Dax过滤器.创建避免计算列的度量

带有IF函数的PowerBI Dax过滤器.创建避免计算列的度量
EN

Stack Overflow用户
提问于 2021-09-23 13:19:34
回答 1查看 123关注 0票数 0

我已经创建了一个Dax代码,它根据一些过滤器计算我们公司的SKU数量。现在,我的dataset中有以下代码+助手列,这样做是正确的。

代码语言:javascript
复制
Number of Active SKU = 
    CALCULATE( COUNTROWS('Item'),
     FILTER('Item','Item'[Helpcolumn3] = 1 ),
    
     FILTER('SKUInfo',SKUInfo[StockKeeping] = "1" ),
    
        NOT('Item'[SKUStatus] IN { "P", "U", "X", "Z" } ) )

Helpcolumn3由我的数据集中的三个计算列组成,大约有100万行。

代码语言:javascript
复制
HelpColumn1= IF('Item'[SKULevel] IN {"1","2","3","4","5","6"} && 'Item'[SKUCode] IN{"A","B","C","D","G"},1,0)

HelpColumn2= IF('Item'[SKUCode] ="K", 1, 0 ) 

HelColumn3 = 'Item'[HelpColumn1] + 'Item'[HelpColumn2]

额外帮助栏背后的原因是,我不知道如何将这个部分纳入我的测量。我确信这是可能的,而且我希望避免创建三个额外的帮助列,每个列有100万行,因为数据模型已经相当大了。

任何帮助,我可以这样做,白化,创建额外的列,将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-23 14:42:46

请您试一下好吗?

代码语言:javascript
复制
_count=
CALCULATE (
    COUNTROWS ( 'Item' ),
    TREATAS (
        UNION (
            SUMMARIZE (
                CALCULATETABLE (
                    'Item',
                    CROSSJOIN (
                        { "1", "2", "3", "4", "5", "6" },
                        FILTER ( VALUES ( 'Item'[SKUCode] ), 'Item'[SKUCode] IN { "A", "B", "C", "D", "G" } )
                    )
                ),
                'Item'[SKULevel],
                'Item'[SKUCode]
            ),
            SUMMARIZE ( FILTER ( 'Item', 'Item'[SKUCode] = "C" ), 'Item'[SKULevel], 'Item'[SKUCode] )
        ),
        'Item'[SKULevel],
        'Item'[SKUCode]
    ),
    FILTER ( VALUES ( 'SKUInfo'[Stockkeeping] ), 'SKUInfo'[Stockkeeping] = 1 ),
    NOT 'Item'[SKUStatus] IN { "P", "U", "X", "Z" }
) 

我在这个测量中传递三个过滤过的表来进行计数。

第一组是下面的块->,它为'Item'[SKULevel]={ "1", "2", "3", "4", "5", "6" }'Item'[SKUCode]={ "A", "B", "C", "D", "G" }计算数据的任何组合元素

代码语言:javascript
复制
TREATAS (
    UNION (
        SUMMARIZE (
            CALCULATETABLE (
                'Item',
                CROSSJOIN (
                    { "1", "2", "3", "4", "5", "6" },
                    FILTER ( VALUES ( 'Item'[SKUCode] ), 'Item'[SKUCode] IN { "A", "B", "C", "D", "G" } )
                )
            ),
            'Item'[SKULevel],
            'Item'[SKUCode]
        ),
        SUMMARIZE ( FILTER ( 'Item', 'Item'[SKUCode] = "C" ), 'Item'[SKULevel], 'Item'[SKUCode] )
    ),
    'Item'[SKULevel],
    'Item'[SKUCode]

第二组表是以下块--它进一步将第一个表的计数筛选为仅'SKUInfo'[Stockkeeping] = 1

代码语言:javascript
复制
FILTER ( VALUES ( 'SKUInfo'[Stockkeeping] ), 'SKUInfo'[Stockkeeping] = 1 )

第三组表是以下块--进一步将第二组筛选为仅NOT 'Item'[SKUStatus] IN { "P", "U", "X", "Z" }

代码语言:javascript
复制
NOT 'Item'[SKUStatus] IN { "P", "U", "X", "Z" }

简单地说,对于任何具有'Item'[SKULevel]={ "1", "2", "3", "4", "5", "6" }'Item'[SKUCode]={ "A", "B", "C", "D", "G" }但只有'SKUInfo'[Stockkeeping] = 1和无带有[SKUStatus]="P", "U", "X", "Z"的项,它都会返回[SKUStatus]="P", "U", "X", "Z"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69300843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档