Подсчет ИСТИН в меру - PullRequest
       6

Подсчет ИСТИН в меру

0 голосов
/ 15 октября 2019

Итак, у меня есть этот фрагмент кода, который проверяет, какие машины, которые мы сделали, в настоящее время активны. Текущий стандарт для активной машины заключается в том, что она генерирует не менее 25 виджетов в неделю в течение последних четырех недель подряд. Написать это в DAX было не так сложно, но мы не довольны определением. В настоящее время проблема заключается в том, что если работа на одной машине отнимает у машины неделю, теперь она считается неактивной, даже если на нее уходит всего одна неделя <25 виджетов. Теперь мы хотим изменить определение на 3/4 недели за последние четыре недели. Таким образом, машина не помечается как неактивная в течение одной медленной недели. </p>

Это оказалось сложнее, чем я думал. Моя первоначальная идея состояла в том, чтобы просто установить счетчик VAR = 0 и просто подсчитывать каждую ИСТИНА за каждую неделю, если счетчик равен 3 или выше, машина активна. Проблема в том, что я просто не могу понять, как использовать VAR в DAX, я просто не понимаю.

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)

Код выше в настоящее время работает, теперь, что мне нужно добавить к этому (или удалить, или что-то ещееще) чтобы у меня появилась идея поработать здесь? Любая помощь будет принята с благодарностью:)

1 Ответ

0 голосов
/ 18 октября 2019

Я тоже спрашивал на форумах 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)
...