Страницы: 1
RSS
Линия прогноза продолжает линию факта, DAX Линия прогноза продолжает линию факта
 
Добрый день, уважаемые форумчане!
Помогите, пожалуйста: есть линия прогноза и нужно, чтобы она пока есть линия факта линия прогноза повторяла её или её вообще не было, а потом она выходила из точки факта и шёл собственно прогноз. Сейчас мера выглядит так, а как связать всё в одно не знаю :(
Прогноз кол-во заказов НИ =
var _datemax =
CALCULATE (
   MAX ( 'APO_BI_Кратко'[Site Arrival Forecast] ),
   ALL ( 'Календарь (не связанный)' )
)
var_datefact =
MAX ( 'APO_BI_Кратко'[Site Arrival Actual] )
VARnextDate =
CALCULATE (
   MIN ( 'APO_BI_Кратко'[Site Arrival Forecast] ),
   ALL ( 'Календарь (не связанный)' ),
   'APO_BI_Кратко'[Site Arrival Forecast] > _datefact
)
var_fact =
CALCULATE (
   CALCULATE (
       [Факт кол-во заказов],
       FILTER (
           ALL ( 'Календарь (не связанный)' ),
           'Календарь (не связанный)'[Конец месяца]
               <= MAX ( 'Календарь (не связанный)'[Конец месяца] )
       ),
       'APO_BI_Кратко'[Site Arrival Actual] <> BLANK ()
   ),
   FILTER (
       'Календарь (не связанный)',
       'Календарь (не связанный)'[дата отчёта] <= _datefact
   )
)
var_forecast =
CALCULATE (
   CALCULATE (
       CALCULATE (
           [Прогноз кол-во заказов],
           USERELATIONSHIP ( 'APO_BI_Кратко'[Site Arrival Forecast], 'Календарь (не связанный)'[дата отчёта] )
       ),
       FILTER (
           ALL ( 'Календарь (не связанный)' ),
           'Календарь (не связанный)'[Конец месяца]
               <= MAX ( 'Календарь (не связанный)'[Конец месяца] )
       ),
       'APO_BI_Кратко'[Site Arrival Forecast] <> BLANK ()
   ),
   FILTER (
       'Календарь (не связанный)',
       'Календарь (не связанный)'[дата отчёта] <= _datemax
   )
)
var result =
return result
 
Цитата
Розочка написал:
а потом она выходила из точки факта и шёл собственно прогноз
попробуйте добавить обычную проверку на крайнюю дату из таблицы факта. Что-то типа такого:
Код
=IF(
       CALCULATE(MAX('TableFact[Date]');ALL('TableFact'))<=MAX('Calendar[Date]');
       [measure_fact];
       [measure_forecast]
)
Изменено: Vladimir Ch - 30.09.2022 07:48:18
 
изменила меру вот так:
Прогноз кол-во заказов НИ = var _datemax =
CALCULATE(
  MAX ( 'APO_BI_Кратко'[Site Arrival Forecast] ),
all('Календарь (не связанный)'))

var _datefact =
MAX ( 'APO_BI_Кратко'[Site Arrival Actual] )

var _fact =
CALCULATE (
  CALCULATE (
      [Факт кол-во заказов],
      FILTER (
          ALL ( 'Календарь (не связанный)' ),
          'Календарь (не связанный)'[Конец месяца]
              <= MAX ( 'Календарь (не связанный)'[Конец месяца] )
      ),
      'APO_BI_Кратко'[Site Arrival Actual] <> BLANK ()
  ),
  FILTER (
      'Календарь (не связанный)',
      'Календарь (не связанный)'[дата отчёта] <= _datefact
  )
)
var _forecast =
CALCULATE (
  CALCULATE (
      CALCULATE (
          [Прогноз кол-во заказов],
          USERELATIONSHIP ( 'APO_BI_Кратко'[Site Arrival Forecast], 'Календарь (не связанный)'[дата отчёта] )
      ),
      FILTER (
          ALL ( 'Календарь (не связанный)' ),
          'Календарь (не связанный)'[Конец месяца]
              <= MAX ( 'Календарь (не связанный)'[Конец месяца] )
      ),
      'APO_BI_Кратко'[Site Arrival Forecast] <> BLANK ()
  ),
  FILTER (
      'Календарь (не связанный)',
      'Календарь (не связанный)'[дата отчёта] <= _datemax
  )
)
var result = IF(
      CALCULATE(MAX('APO_BI_Кратко'[Site Arrival Actual]), ALL('APO_BI_Кратко'[Site Arrival Actual]))<=MAX ('Календарь (не связанный)'[дата отчёта] ),
      _fact, --IF(
      _forecast

)
return result
теперь факт совпадает с прогнозом, но далее прогноз не рисуется :( Помогите, пожалуйста!  
Изменено: Розочка - 30.09.2022 10:17:05
 
Цитата
Розочка написал:
Помогите, пожалуйста!
Вы же не первый раз здесь за помощью.. где пример?
 
Извините, пример прилагаю.  
 
Цитата
Розочка написал:
Извините, пример прилагаю.
а где модель данных? Без нее Ваш пример ничего не значит
 
Почему-то когда создаю модель данных размер файла резко увеличивается. Хотела ещё меры добавить, но файл тогда получается слишком большой. Прикрепляю файл с моделью данных. Vladimir Ch, спасибо за помощь!
 
Да, с Вами в разведку не пойдешь! Как Вы не можете понять: те меры, которые Вы написали выше, нельзя оценить на корректность, пока не увидишь их в примере модели данных. Сначала Вы модель не приложили, а теперь в ней нет мер! Те, что Вы написали, в пример не подходят. Приложите модель данных с написанными вашими мерами факта и прогноза. Тогда уже можно будет и найти решение Вашей проблемы. За вас писать новые меры с нуля желания нет.
 
Файл с мерами прилагаю. Почему-то в PBI линия прогноза начинается только после окончания плана.  
 
Розочка, у Вас не получается объединить две меры (факт и прогноз) в одну линию, потому что Вы модель данных построили неверно. Почему у вас календарь содержит только начальные даты недели? На то он и календарь, чтобы видеть все даты. Из-за этого и не получается сделать нужный результат. В примере я добавил обычный календарь и скопировал ваши меры (кроме значения "дата отчета" - думаю, разберетесь, как добавить), тогда факт и прогноз спокойно объединяются. У меня результирующая мера получилась следующего вида:
Код
=var max_date_fact = CALCULATE(MAX('APO_BI_кратко'[Site Arrival Actual]);ALL('APO_BI_кратко'))
var current_date = MAX('Календарь 1'[Date])
var rezult =
IF(current_date<=max_date_fact;[факт НИ (коррект)];[прогноз НИ (коррект)])
return
rezult

П.С. я, честно говоря удивлен: Вы пишите непростые меры, т.е. демонстрируете уже хорошие познания в DAX, но при этом ошибаетесь в понимании  таких простых вещах как "справочники". Календарь - это тоже таблица-справочник, и его всегда нужно делать, даже в самой простой модели.
Изменено: Vladimir Ch - 03.10.2022 07:43:34
 
Цитата
написал:
Розочка, у Вас не получается объединить две меры (факт и прогноз) в одну линию, потому что Вы модель данных построили неверно. Почему у вас календарь содержит только начальные даты недели? На то он и календарь, чтобы видеть все даты. Из-за этого и не получается сделать нужный результат. В примере я добавил обычный календарь и скопировал ваши меры (кроме значения "дата отчета" - думаю, разберетесь, как добавить), тогда факт и прогноз спокойно объединяются. У меня результирующая мера получилась следующего вида:
Код
    [URL=#]?[/URL]       1  2  3  4  5  6      =var max_date_fact = CALCULATE(MAX(  'APO_BI_кратко'[Site Arrival Actual]);ALL('APO_BI_кратко'))    var current_date = MAX(  'Календарь 1'[Date])    var rezult =    IF(current_date<=max_date_fact;[факт НИ (коррект)];[прогноз НИ (коррект)])    return    rezult   
 
П.С. я, честно говоря удивлен: Вы пишите непростые меры, т.е. демонстрируете уже хорошие познания в DAX, но при этом ошибаетесь в понимании  таких простых вещах как "справочники". Календарь - это тоже таблица-справочник, и его всегда нужно делать, даже в самой простой модели.
Владимир, спасибо Вам большое за помощь!
Страницы: 1
Наверх