Конвертировать числовой тип 2000.50 в формат данных 2000/09/30 в Powerbi - PullRequest
1 голос
/ 24 июня 2019

Я пытаюсь преобразовать числовой столбец со значениями 2000.50 / 2000.75 и в формат даты 2000/09/30 в PowerBI

VAR FiscalYear2 =
    LEFT ( Axio_QuarterlySupplyDemandModelNational[Year_Dup], 4 )
RETURN
    (
        SWITCH (
            RIGHT ( Axio_QuarterlySupplyDemandModelNational[Year_Dup], 3),
            ".00", "3/31/" & FiscalYear2,
            ".25", "6/30/" & FiscalYear2,
            ".50", "9/30/" & FiscalYear2,
            ".75", "12/31/" & FiscalYear2     
        )
)

Я попробовал приложенный код, но некоторые значения, такие как 2000.00 / 2000.50, не были преобразованы должным образом.

1 Ответ

1 голос
/ 24 июня 2019

Есть несколько подходов, которые, на мой взгляд, лучше, чем пытаться преобразовать значение десятичной даты в DAX. В комментариях было рекомендовано выполнить преобразование в Power Query, что является хорошим предложением, или использовать таблицу дат.

У нас не всегда есть контроль над моделью, поэтому, если нужен дополнительный столбец на стороне отчетности, я бы предположил, что это не вопрос форматирования. Дробные годы не являются стандартным форматом даты. У вас есть числа, поэтому ваш подход должен заключаться не в разборе или форматировании, а в вычислении.

DateConverted_col = 
    VAR YearVal = TRUNC(Axio_QuarterlySupplyDemandModelNational[Year_Dup])
    VAR QuarterVal = Mod(Axio_QuarterlySupplyDemandModelNational[Year_Dup] * 4, 4) + 1

    RETURN Date(YearVal, QuarterVal * 3 + 1, 1) - 1

Функция TRUNC сбрасывает десятичную часть числа, оставляя вам только год.

Модуло нуждается в небольшом массаже для дробных чисел. Увеличение на 4, а затем нахождение мода 4 даст вам значение 0-3. Добавьте один, и это квартал, с которым мы работаем.

Умножьте квартал на 3, чтобы получить номер месяца. Определите последний день этого месяца, добавив целый месяц к его первому дню, а затем вычтя один день. Престо, у тебя последний день квартала.

Надеюсь, это поможет.

...