Tabla de calendario con 13 períodos

Un usuario Pregunto ✅

Anónimo

Hola a todos, gracias por la ayuda de antemano.

Tengo un problema con cómo crear una tabla de calendario con 13 períodos en un año, cuál sería la fórmula dax para decir, por ejemplo. de mi fecha de calendario indica que SI (fecha de calendario = 1/04/18 – 28/04/18 = Período 1 & IF (Fecha de calendario = 29/04/18 – 26/5/18) = PERIODO 2 ETC hasta el período 1. Hay algunos períodos con 29, 27 y 31 días de diciembre. Cuál es la mejor manera de lograr esto y para varios años, por ejemplo, de 2015 a 2018.

Gracias

Pangea

Hola @Anónimo,

Es posible que deba crear una columna calculada como esta:

period =
IF (
    'Calendar'[Date].[MonthNo] = 4
        && 'Calendar'[Date].[Day] >= 1
        && 'Calendar'[Date].[Day] <= 28,
    "Period1",
    IF (
        ( 'Calendar'[Date].[MonthNo] = 4
            && 'Calendar'[Date].[Day] >= 29 )
            || ( 'Calendar'[Date].[MonthNo] = 5
            && 'Calendar'[Date].[Day] <= 26 ),
        "Period2",
        IF (
            ( 'Calendar'[Date].[MonthNo] = 5
                && 'Calendar'[Date].[Day] >= 27 )
                || ( 'Calendar'[Date].[MonthNo] = 6
                && 'Calendar'[Date].[Day] <= 23 ),
            "Period3",
            "Other period"
        )
    )
)

Atentamente,

Yuliana Gu

Hola @Anónimo,

Es posible que deba crear una columna calculada como esta:

period =
IF (
    'Calendar'[Date].[MonthNo] = 4
        && 'Calendar'[Date].[Day] >= 1
        && 'Calendar'[Date].[Day] <= 28,
    "Period1",
    IF (
        ( 'Calendar'[Date].[MonthNo] = 4
            && 'Calendar'[Date].[Day] >= 29 )
            || ( 'Calendar'[Date].[MonthNo] = 5
            && 'Calendar'[Date].[Day] <= 26 ),
        "Period2",
        IF (
            ( 'Calendar'[Date].[MonthNo] = 5
                && 'Calendar'[Date].[Day] >= 27 )
                || ( 'Calendar'[Date].[MonthNo] = 6
                && 'Calendar'[Date].[Day] <= 23 ),
            "Period3",
            "Other period"
        )
    )
)

Atentamente,

Yuliana Gu

Anónimo

En respuesta a v-yulgu-msft

Muchas gracias Yuliana y Chris por sus respuestas extremadamente útiles.

Yuliana: con la solución de columna calculada que me diste, puedo tener una declaración IF para toda la expresión, de modo que apunte a un año fiscal en particular. Por ejemplo, si es 2019, entonces (su solución provista que incluye las fechas del período) o IF 2018 (su solución provista que incluye fechas de período ligeramente diferentes, ya que cuando se mueven de un año a otro, los parámetros avanzarán un día) Los períodos son de 28 días cada uno aproximadamente, comienza un domingo y finaliza un sábado, por ejemplo, el período 1 en 2018 comienza el 1/4/18 y termina el 28/4/18, sin embargo, el período 1 en 2017 comienza el 1/4/18 y termina el 27/4/18. Espero que esto tenga sentido

Gracias por adelantado

Pangea

ChrisMendoza

@Anónimo,

Posiblemente podría hacer algo como lo siguiente en Power Query:

1. Defina sus períodos personalizados AAAA, MM, DD

2. Agregar columna de índice

3. Obtenga fechas entre

4. Expanda las fechas entre

5. Utilice MOD () para definir los 13 períodos dentro de 1 ciclo; el ejemplo divide un año calendario en 12 períodos con el rango personalizado definido en ‘1’.

let
    Calendar = #table(
	{"PeriodStart", "PeriodEnd" },
	{
		{ #date ( 2017, 6, 1 ), #date ( 2017, 6, 30 ) },
		{ #date ( 2017, 7, 1 ), #date ( 2017, 8, 1 ) },
		{ #date ( 2017, 8, 2 ), #date ( 2017, 8, 31 ) },
		{ #date ( 2017, 9, 1 ), #date ( 2017, 9, 30 ) },
		{ #date ( 2017, 10, 1 ), #date ( 2017, 10, 31 ) },
		{ #date ( 2017, 11, 1 ), #date ( 2017, 11, 30 ) },
		{ #date ( 2017, 12, 1 ), #date ( 2017, 12, 31 ) },
		{ #date ( 2018, 1, 1 ), #date ( 2018, 1, 30 ) },
		{ #date ( 2018, 1, 31 ), #date ( 2018, 2, 28 ) },
		{ #date ( 2018, 3, 1 ), #date ( 2018, 3, 31 ) },
		{ #date ( 2018, 4, 1 ), #date ( 2018, 4, 30 ) },
		{ #date ( 2018, 5, 1 ), #date ( 2018, 5, 30 ) },
		{ #date ( 2018, 5, 31 ), #date ( 2018, 6, 30 ) },
		{ #date ( 2018, 7, 1 ), #date ( 2018, 7, 31 ) },
		{ #date ( 2018, 8, 1 ), #date ( 2018, 8, 30 ) },
		{ #date ( 2018, 8, 31 ), #date ( 2018, 9, 30 ) },
		{ #date ( 2018, 10, 1 ), #date ( 2018, 10, 30 ) },
		{ #date ( 2018, 10, 31 ), #date ( 2018, 11, 29 ) },
		{ #date ( 2018, 11, 30 ), #date ( 2018, 12, 31 ) },
		{ #date ( 2019, 1, 1 ), #date ( 2019, 1, 30 ) },
		{ #date ( 2019, 1, 31 ), #date ( 2019, 2, 28 ) },
		{ #date ( 2019, 3, 1 ), #date ( 2019, 3, 31 ) },
		{ #date ( 2019, 4, 1 ), #date ( 2019, 4, 30 ) },
		{ #date ( 2019, 5, 1 ), #date ( 2019, 5, 30 ) },
		{ #date ( 2019, 5, 31 ), #date ( 2019, 6, 30 ) }
	}
),
    #"Added PeriodIndex" = Table.AddIndexColumn(Calendar, "PeriodIndex", 1, 1),
    #"Added DatesBetween" = Table.AddColumn ( #"Added PeriodIndex", "Date", each List.Transform ( { Number.From ( [PeriodStart] ) ..Number.From ( [PeriodEnd] ) }, each Date.From ( _ ) ) ),
    #"Expanded DatesBetween" = Table.ExpandListColumn ( #"Added DatesBetween", "Date" ),
    #"Removed PeriodStartPeriodEnd" = Table.RemoveColumns ( #"Expanded DatesBetween", { "PeriodStart", "PeriodEnd" } ),
    #"Changed Type To Date" = Table.TransformColumnTypes(#"Removed PeriodStartPeriodEnd",{{"Date", type date}}),
    #"Added PeriodNum" = Table.AddColumn(#"Changed Type To Date", "PeriodNum", each if Number.Mod ( [PeriodIndex], 12 ) = 1 then 12 else Number.Mod ( [PeriodIndex] - 1, 12 ))
in
    #"Added PeriodNum"

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *