Powerbi 计数为真';这是适度的

Powerbi 计数为真';这是适度的,powerbi,dax,Powerbi,Dax,我有一段代码,用来检查我们制造的哪些机器目前处于活动状态。活动机器的当前标准是,它至少每周生产25个小部件,连续四周生产。用DAX写这篇文章并不难,但我们对定义不满意。当前的问题是,如果一台机器的工作停止一周,那么该机器现在将被视为不活动,即使它只有一周

我有一段代码,用来检查我们制造的哪些机器目前处于活动状态。活动机器的当前标准是,它至少每周生产25个小部件,连续四周生产。用DAX写这篇文章并不难,但我们对定义不满意。当前的问题是,如果一台机器的工作停止一周,那么该机器现在将被视为不活动,即使它只有一周<25个窗口小部件。我们现在要做的是将过去四周的定义更改为3/4周。这样,机器在一个缓慢的星期内不会被标记为不活动

这比我想象的要难。我最初的想法是让VAR计数器=0,如果计数器为3或更高,则每周只计算每个TRUE,机器处于活动状态。问题是我就是不知道如何在DAX中使用VAR,我就是不明白

ActiveMachines = IF( 
    (CALCULATE(SUM('Query1'[TrayProduced Hourly]),
              DATESINPERIOD('Query1'[TrayProducedDay].[Date]
                            ,CALCULATE(MAX('Query1'[TrayProducedDay].[Date]), FILTER(ALL('Query1'), 'Query1'[TrayProduced Hourly]))
                            ,-7
                            ,DAY)
             ) > 25 &&  
    CALCULATE(SUM('Query1'[TrayProduced Hourly]),
              DATESINPERIOD('Query1'[TrayProducedDay].[Date]
                            ,(CALCULATE(MAX('Query1'[TrayProducedDay].[Date]), FILTER(ALL('Query1'), 'Query1'[TrayProduced Hourly])) - 7)
                            ,-7
                            ,DAY)
             ) > 25 && 
    CALCULATE(SUM('Query1'[TrayProduced Hourly]),
              DATESINPERIOD('Query1'[TrayProducedDay].[Date]
                            ,(CALCULATE(MAX('Query1'[TrayProducedDay].[Date]), FILTER(ALL('Query1'), 'Query1'[TrayProduced Hourly])) - 14)
                            ,-7
                            ,DAY)
             ) > 25 && 
    CALCULATE(SUM('Query1'[TrayProduced Hourly]),
              DATESINPERIOD('Query1'[TrayProducedDay].[Date]
                            ,(CALCULATE(MAX('Query1'[TrayProducedDay].[Date]), FILTER(ALL('Query1'), 'Query1'[TrayProduced Hourly])) - 21)
                            ,-7
                            ,DAY)
             ) > 25), TRUE, FALSE)

上面的代码目前可以工作,现在我需要添加什么(或者删除什么,或者其他什么)才能让我的想法在这里工作?如果有任何帮助,我们将不胜感激:)

我也在PowerBi论坛上问过,在那里我得到了这个答案:

ActiveMachines = IF( 
(IF(CALCULATE(SUM('MetricsQuery'[TrayProduced Hourly]),
          DATESINPERIOD('MetricsQuery'[TrayProducedDate].[Date]
                        ,CALCULATE(MAX('MetricsQuery'[TrayProducedDate].[Date]), FILTER('MetricsQuery', 'MetricsQuery'[TrayProduced Hourly]))
                        ,-7
                        ,DAY)
        ), 1) +  
IF(CALCULATE(SUM('MetricsQuery'[TrayProduced Hourly]),
          DATESINPERIOD('MetricsQuery'[TrayProducedDate].[Date]
                        ,(CALCULATE(MAX('MetricsQuery'[TrayProducedDate].[Date]), FILTER('MetricsQuery', 'MetricsQuery'[TrayProduced Hourly])) - 7)
                        ,-7
                        ,DAY)
        ), 1) + 
IF(CALCULATE(SUM('MetricsQuery'[TrayProduced Hourly]),
          DATESINPERIOD('MetricsQuery'[TrayProducedDate].[Date]
                        ,(CALCULATE(MAX('MetricsQuery'[TrayProducedDate].[Date]), FILTER('MetricsQuery', 'MetricsQuery'[TrayProduced Hourly])) - 14)
                        ,-7
                        ,DAY)
         ), 1) + 
IF(CALCULATE(SUM('MetricsQuery'[TrayProduced Hourly]),
          DATESINPERIOD('MetricsQuery'[TrayProducedDate].[Date]
                        ,(CALCULATE(MAX('MetricsQuery'[TrayProducedDate].[Date]), FILTER('MetricsQuery', 'MetricsQuery'[TrayProduced Hourly])) - 21)
                        ,-7
                        ,DAY)
        ), 1) 
          >= 3), TRUE, FALSE)