Я хочу подсчитать средние оценки компаний за последние 5 лет.Исключая NULLS (однако включая 0) в расчетах.Ниже приведены данные:
Company Year Score
Company A 2014 1
Company B 2014 1
Company C 2014
Company D 2014 0
Company A 2015 1
Company B 2015 0
Company C 2015
Company D 2015 0
Company A 2016 1
Company B 2016 1
Company C 2016 1
Company D 2016 1
Company A 2017 1
Company B 2017 1
Company C 2017 1
Company D 2017 1
Company A 2018 1
Company B 2018 1
Company C 2018 1
Company D 2018 1
По существу, если вы видите, что компании C и D выглядят одинаково.Тем не менее, оценка за 2014 и 2015 годы для компании C равна нулю, в отличие от компании D, для которой она равна 0.
Среднее значение для C составляет 100% (3/3), тогда как для компании D оно составляет 60% (3/5)
Я мог бы идеально достичь результатов для компаний, в которых отсутствуют NULL, используя следующий код:
_COL_Liquidity Score 2 =
VAR MaxSelectedYear = 'Data'[Year]
VAR OnePriorYear = MaxSelectedYear - 1
VAR TwoPriorYear = MaxSelectedYear - 2
VAR ThreePriorYear = MaxSelectedYear - 3
VAR FourPriorYear = MaxSelectedYear - 4
VAR MinYearInData = MINX(ALL('Data'), 'Raw Data'[Year])
RETURN
DIVIDE(
CALCULATE(SUM('Data'[Score]), FILTER(ALLEXCEPT('Data',Company), 'Raw Data'[Year] = MaxSelectedYear))
+
CALCULATE(SUM('Data'[Score]), FILTER(ALLEXCEPT('Data',Company), 'Raw Data'[Year] = OnePriorYear))
+
CALCULATE(SUM('Data'[Score]), FILTER(ALLEXCEPT('Data',Company), 'Raw Data'[Year] = TwoPriorYear))
+
CALCULATE(SUM('Data'[Score]), FILTER(ALLEXCEPT('Data',Company), 'Raw Data'[Year] = ThreePriorYear))
+
CALCULATE(SUM('Data'[Score]), FILTER(ALLEXCEPT('Data',Company), 'Raw Data'[Year] = FourPriorYear))
,
IF(OnePriorYear < MinYearInData, 1,
IF(TwoPriorYear < MinYearInData,2,
IF(ThreePriorYear < MinYearInData, 3,
IF(FourPriorYear < MinYearInData, 4,5)
)
)
),
BLANK()
)
Ожидаемый результат:
Company A - 100%
Company B - 80%
Company C - 100%
Company D - 60%