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

Get inspired! Check out the entries from the Power BI DataViz World Championships preliminary rounds and give kudos to your favorites. View the vizzies.

Reply
Syndicate_Admin
Administrator
Administrator

Generarseries de varios valores

Hola comunidad de Power BI,

Me gustaría generar series a partir de la tabla a continuación utilizando el número de mes como valor de entrada de end_value en la sintaxis a continuación.

GENERATESERIES ( start_value, end_value [, step_value] )

Arrendamiento # Fecha de inicio Fecha final

Pagos programados

USD

Meses
1 7/20/2024 7/19/2029 4,000 60
2 1/1/2023 12/31/2024 2,000 23

Por favor, ¿podría decirme cómo puedo generar dinámicamente una tabla de múltiples series generadas que hagan referencia a la columna [Meses] en la tabla?

¡Gracias por tu ayuda!

Saludos

1 ACCEPTED SOLUTION

Este tema se resolvió simplificando el código del tema anterior de la siguiente manera:

Series = 
GENERATE(
    VALUES('Tasks'[Task]),  -- Iterate over distinct Task Names
    VAR MaxFinalLife = MAXX(FILTER('Tasks', 'Tasks'[Task] = EARLIER('Tasks'[Task])), 'Tasks'[Final Life])
    RETURN
    SELECTCOLUMNS(
        GENERATESERIES(1, MaxFinalLife, 1),
        "Series", [Value]
    )
)

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Hola @DataNinja777

Honestamente, esto se hace mejor en M que en DAX. Su ejemplo, solo tiene dos filas, por lo que la latencia es muy, muy insignificante, pero no es un caso diferente cuando tiene miles de filas, sin mencionar los otros cálculos dentro de su modelo. Pero para ver si es posible en DAX, aquí hay un ejemplo de fórmula de tabla de cálculo

Series =
VAR __TBL =
    DATATABLE (
        "Start Date", DATETIME,
        "End Date", DATETIME,
        "Index", INTEGER,
        {
            { "2024/7/20", "2029/7/19", 1 },
            { "2023/1/1", "2024/12/31", 2 }
        }
    )
VAR __Series =
    GENERATESERIES ( 1, 60, 1 ) --must use the highest month count
VAR __CROSSJOINED =
    ADDCOLUMNS (
        CROSSJOIN ( __TBL, __Series ),
        "Date", EDATE ( [Start Date], [Value] ) - 1
    ) -- this will generate dates way later than the end date
RETURN
    FILTER ( __CROSSJOINED, [Date] <= [End Date] )
--filter the generated dates to include <= end date

Hola @danextian ,

Gracias por su aporte, sin embargo, las dos líneas son solo un ejemplo simplificado, y podría tener miles de líneas para eso, por lo que escribir números codificados no es una opción para mí. Estaba pensando en algo en línea con la solución a continuación de @xifeng_L , pero en un escenario mucho más simple que el caso a continuación, ya que no necesito hacer que otras entradas en la sintaxis de generateseries sean dinámicas.

https://community.fabric.microsoft.com/t5/Desktop/Generateseries-of-multiple-values/m-p/4052132

Saludos

Hola @DataNinja777 ,

Esta fórmula se refiere a una tabla existente.

Series = 
VAR __TBL =
    SELECTCOLUMNS('Data', "Start Date", 'Data'[Start Date], "End Date", 'Data'[End Date], "Index", 'Data'[Index] )
VAR __MAX = MAX ( Data[Month] )
VAR __Series =
    GENERATESERIES ( 1, __MAX, 1 ) --must use the highest month count
VAR __CROSSJOINED =
    ADDCOLUMNS (
        CROSSJOIN ( __TBL, __Series ),
        "Date", EDATE ( [Start Date], [Value] ) - 1
    ) -- this will generate dates way later than the end date
RETURN
    FILTER ( __CROSSJOINED, [Date] <= [End Date] )

El índice no es necesario. Es solo una forma de identificar a qué fila de la tabla de referencia se refiere una fila de la tabla de series. Tenga en cuenta que hacer esto en una tabla grande puede causar un problema de rendimiento.

Gracias @danextian . Funciona perfectamente.

Este tema se resolvió simplificando el código del tema anterior de la siguiente manera:

Series = 
GENERATE(
    VALUES('Tasks'[Task]),  -- Iterate over distinct Task Names
    VAR MaxFinalLife = MAXX(FILTER('Tasks', 'Tasks'[Task] = EARLIER('Tasks'[Task])), 'Tasks'[Final Life])
    RETURN
    SELECTCOLUMNS(
        GENERATESERIES(1, MaxFinalLife, 1),
        "Series", [Value]
    )
)

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

FebPBI_Carousel

Power BI Monthly Update - February 2025

Check out the February 2025 Power BI update to learn about new features.

March2025 Carousel

Fabric Community Update - March 2025

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

Top Solution Authors
Top Kudoed Authors