Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Syndicate_Admin
Administrator
Administrator

Expandir el intervalo de fechas con patrón repetido

Hola

Necesito hacer algo duro en power BI y estoy luchando... Me explico, tengo una fila con rango de fechas (inicio y fin) que necesito expandir en fila para cada día entre, fácil hasta ahora. Pero cada vez es más difícil porque es un patrón con repetición hasta una tercera cita. Por lo tanto, estoy buscando un tutorial para ampliar mi rango, pero solo para el día entre, y solo hasta la fecha repetida.

es decir:
fecha de inicio : 08/08/2022
fecha de finalización : 09/08/2022
volver a sentarse hasta : 31/08/2022

Quiero una fila con la fecha para cada lunes y martes hasta fin de mes, 8 filas.

¿Alguien sabe cómo hacer eso?

¡Gracias de antemano!

Juliano

Capture d’écran 2022-08-09 082704.png

10 REPLIES 10
Syndicate_Admin
Administrator
Administrator

Hola

Por favor, compruebe la imagen de abajo y el archivo pbix adjunto.

Es para crear una nueva tabla.

Picture4.png

New Table = 
VAR _mindate =
    MIN ( Data[Start_Date] )
VAR _maxdate =
    MAX ( Data[Repeat_Until] )
VAR _calendartable =
    ADDCOLUMNS (
        CALENDAR ( _mindate, _maxdate ),
        "@dayname", FORMAT ( [Date], "ddd" )
    )
VAR _generatetable =
    GENERATE (
        Data,
        FILTER (
            _calendartable,
            [@dayname]
                IN { FORMAT ( Data[Start_Date], "ddd" ), FORMAT ( Data[End_Date], "ddd" ) }
                    && [Date] <= Data[Repeat_Until]
        )
    )
RETURN
    SUMMARIZE (
        _generatetable,
        Data[ID],
        Data[Start_Date],
        Data[End_Date],
        Data[Repeat_Until],
        [Date]
    )

Hola Jihwan y gracias por tu muestra, es buena pero descubro algo con mis datos. Debido al hecho de que no todas las filas tienen reapeat, a veces hay un rango de fechas sin patrón reapeted. Así que no funciona en este caso. Sé cómo hacerlo en QUERY pero no en DAX, ¿tienes el mismo cálculo pero en power query?

Gracias de nuevo.

Juliano

Hola

Gracias por su mensaje.

Lamento no entender su última explicación.

Si está bien con usted, ¿podría compartir el enlace de su archivo pbix de muestra con cómo se ve el resultado esperado? Y luego puedo intentar crear una solución.

Gracias.

Lo siento, no expresé mi problema correctamente, he duplicado su conjunto y agrego 2 filas más (id 3 y 4):

Capture d’écran 2022-08-09 082704.png

Para id 3: Necesito mantener la fila sola porque la fecha de inicio = fecha de finalización, luego la expansión de fecha debe chow exactamente la fecha (27/07/2022 en este caso)

Para el id 4, tengo un rango pero no repito, luego necesito expandir en 3 filas solo el rango (para el 12 / 13 / 14 de julio)

¡Gracias de nuevo por su tiempo!

Br

Juliano

Hola

Gracias por su explicación.

¿Podría verificar el archivo adjunto, si se adapta a sus necesidades?

Es para crear una nueva tabla2.

Picture8.png

New Table 2 =
VAR _mindate =
    MIN ( Data2[Start_Date] )
VAR _maxdate =
    MAX ( Data2[Repeat_Until] )
VAR _calendartable =
    ADDCOLUMNS (
        CALENDAR ( _mindate, _maxdate ),
        "@dayname", FORMAT ( [Date], "ddd" )
    )
VAR _generatetable =
    GENERATE (
        FILTER ( Data2, Data2[Repeat_Until] <> BLANK () ),
        FILTER (
            _calendartable,
            [@dayname]
                IN { FORMAT ( Data2[Start_Date], "ddd" ), FORMAT ( Data2[End_Date], "ddd" ) }
                    && [Date] <= Data2[Repeat_Until]
        )
    )
VAR _generatetabletwo =
    GENERATE (
        FILTER ( Data2, Data2[Repeat_Until] = BLANK () ),
        FILTER (
            _calendartable,
            [Date] >= Data2[Start_Date]
                && [Date] <= Data2[End_Date]
        )
    )
RETURN
    UNION (
        SUMMARIZE (
            _generatetable,
            Data2[ID],
            Data2[Start_Date],
            Data2[End_Date],
            Data2[Repeat_Until],
            [Date]
        ),
        SUMMARIZE (
            _generatetabletwo,
            Data2[ID],
            Data2[Start_Date],
            Data2[End_Date],
            Data2[Repeat_Until],
            [Date]
        )
    )

Hi Jihwan,

No me di cuenta, pero hay un error, en su tabla de resultados para id 1 y 2

Creó una fila a partir de la fecha de inicio MIN de toda la tabla, pero el día generado debe estar entre la fecha del intervalo hasta la fecha repetida para cada id.

Por ejemplo, la primera fila que generó para el id 1 Fecha = 7/12/2022 que es el MIN de la fecha de inicio id 4.

El resultado debe comenzar a partir del 7/25/2022 para el id 1.

No entiendo por qué, pero su inicio de expansión es falso en id 1 y 2 pero correcto al final del rango cada vez (8/30/2022 para id 1 y 8/26/2022 para id 2)

Ver en esta imagen solo necesitamos la parte verde de la tabla para el caso id 1:

Capture d’écran 2022-08-09 082704.png

¡Gracias por su tiempo, sus respuestas realmente me están ayudando con esta manipulación!

Juliano

Hola

Muchas gracias por sus comentarios, y lamento no haberlo comprobado cuidadosamente.

Compruebe el archivo pbix adjunto si se adapta al requisito.

New Table 2 = 
VAR _mindate =
    MIN ( Data2[Start_Date] )
VAR _maxdate =
    MAX ( Data2[Repeat_Until] )
VAR _calendartable =
    ADDCOLUMNS (
        CALENDAR ( _mindate, _maxdate ),
        "@dayname", FORMAT ( [Date], "ddd" )
    )
VAR _generatetable =
    GENERATE (
        FILTER ( Data2, Data2[Repeat_Until] <> BLANK () ),
        FILTER (
            _calendartable,
            [@dayname]
                IN { FORMAT ( Data2[Start_Date], "ddd" ), FORMAT ( Data2[End_Date], "ddd" ) }
                    && [Date] <= Data2[Repeat_Until]
                    && [Date] >= Data2[Start_Date]
        )
    )
VAR _generatetabletwo =
    GENERATE (
        FILTER ( Data2, Data2[Repeat_Until] = BLANK () ),
        FILTER (
            _calendartable,
            [Date] >= Data2[Start_Date]
                && [Date] <= Data2[End_Date]
        )
    )
RETURN
    UNION (
        SUMMARIZE (
            _generatetable,
            Data2[ID],
            Data2[Start_Date],
            Data2[End_Date],
            Data2[Repeat_Until],
            [Date]
        ),
        SUMMARIZE (
            _generatetabletwo,
            Data2[ID],
            Data2[Start_Date],
            Data2[End_Date],
            Data2[Repeat_Until],
            [Date]
        )
    )

Eso es perfectamente lo que necesito... Muchas gracias que me acabas de ahorrar días de investigación, sinceramente.

Acepto su solución y le doy una recomendación en linkedin.

Gracias de nuevo y agradable para intercambiar de nuevo!

Juliano

Syndicate_Admin
Administrator
Administrator

@Ju7438 , Consulte este blog sobre power query puede ayudar

https://amitchandak.medium.com/power-query-get-all-dates-between-the-start-and-end-date-9ad6a84cf5f2

o el archivo adjunto con código DAX

Hola compañero y gracias por tu interés, lamentablemente esta forma no funciona en mi caso 😞 ..

Br

Juliano

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.