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

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
Syndicate_Admin
Administrator
Administrator

Creación de fechas futuras con valores en la nueva tabla

Hola amigos,

Espero que alguien pueda ayudarme con poco problema. 😊

Mi modelo de datos se basa en 5 tablas, 1 tabla de calendario, 3 tablas de hechos y una tabla de dimensiones.

CF_Datenmodell_ForecastZukunftswerte_20250625.png

En este modelo de datos puedo mostrar en la tabla de informes el cliente (tabla de contratos de suscripción del cliente), la fecha de inicio y finalización de la suscripción, el precio, el número de contrato de suscripción (tabla de líneas de suscripción).... También puedo mostrar la próxima fecha de facturación (tabla de dimensiones). La fecha de facturación es definida por el sistema ERP y cambia después de la ejecución de la factura. Medida para mostrar la próxima fecha de facturación:

FutureBillingDate:=
VAR Date = Calculate(Max(Dimension table[Dimensionvaluecode]),Dimension table (Dimensioncode]= “Date »)
Return Date

Ejemplo de mi tabla mostrada en PowerBI basada en el modelo de datos:

Cliente

Fecha de inicio

Fecha final

Precio

Número de contrato de suscripción

Próxima fecha de facturación

Frecuencia de pago

Papá Noel

01.01.2025

31.12.2030

100€

C00001

25.06.2026

Anual

Rudolph

01.01.2025

31.12.2028

10€

C00002

01.07.2025

mensual

Mi objetivo es tener una nueva tabla que muestre la próxima fecha de facturación para los próximos diez años.

Cliente

Número de contrato de suscripción

Próxima fecha de facturación

Precio

Papá Noel

C00001

25.06.2026

100€

Papá Noel

C00001

25.06.2027

100€

Papá Noel

C00001

25.06.2028

100€

Papá Noel

C00001

25.06.2029

100€

Rudolph

C00002

01.07.2025

20€

Rudolph

C00002

01.08.2025

20€

Rudolph

C00002

01.09.2025

20€

La próxima fecha de facturación, que se basa en nuestro sistema ERP, se sobrescribirá después de la ejecución de la factura para, por ejemplo, C00001, Santa Claus. En 2027, el punto de partida de Papá Noel es para la próxima fecha de facturación es el 25.06.2027. A continuación, la tabla debe tener el siguiente aspecto:

Cliente

Número de contrato de suscripción

Próxima fecha de facturación

Precio

Papá Noel

C00001

25.06.2027

100€

Papá Noel

C00001

25.06.2028

100€

Papá Noel

C00001

25.06.2029

100€

Papá Noel

C00001

25.06.2030

100€

La misma lógica se aplica a Rudolph en función de sus condiciones.

Espero haber sido capaz de explicar mi problema y mi objetivo de forma clara y comprensible y que alguien pueda ayudarme.

Agradezco cualquier ayuda para encontrar una solución

Teniente 🙂

10 REPLIES 10
Syndicate_Admin
Administrator
Administrator

Hola @v-mdharahman ,

desafortunadamente estoy recibiendo la siguiente falla:

El objeto "Precio" de tipo Columna ya existe en la tabla Objeto de facturación siguiente de tipo. (Está traducido del alemán, así que no sé si el fracaso se llama igual en inglés)

¿Tienes una idea de cómo resolver el problema?

Gracias

Teniente

Hola @Tendo,

El error (el objeto "Price" de tipo Column ya existe) que está viendo se produce porque la columna Price ya existe en la tabla base (tabla de líneas de suscripción) y la fórmula DAX intenta agregar otra columna con el mismo nombre mediante ADDCOLUMNS.

Para solucionar esto, solo deberá cambiar el nombre de la nueva columna en la función ADDCOLUMNS a algo como "Precio de facturación" (o cualquier otro nombre único). Aquí está el código actualizado:

SiguienteProgramaciónDeFacturación =
Años máximos de VAR = 10
DEVOLUCIÓN
ADDCOLUMNS (
GENERAR (
FILTRO (
«Tabla de líneas de suscripción»,
NOT ISBLANK ( [FutureBillingDate] )
),
VAR CustomerName = RELATED ( 'Tabla de contratos de suscripción de cliente'[Cliente] )
VAR ContractNumber = 'Tabla de líneas de suscripción'[Número de contrato de suscripción]
VAR PriceValue = 'Tabla de líneas de suscripción'[Precio]
VAR StartDate = [FutureBillingDate]
VAR EndDate = 'Tabla de líneas de suscripción'[Fecha de finalización]
Frecuencia VAR = 'Tabla de líneas de suscripción'[Frecuencia de pago]
VAR MaxDate = MIN ( EndDate, EDATE ( StartDate, 12 * MaxYears ) )
DEVOLUCIÓN
ADDCOLUMNS (
GENERATESERIES ( 0, MaxYears * 12, 1 ),
"Cliente", CustomerName,
"Número de contrato de suscripción", ContractNumber,
"Próxima fecha de facturación",
INTERRUPTOR (
VERDADERO (),
Frecuencia = "Anual", DATEADD ( StartDate, [Value], YEAR ),
Frecuencia = "Mensual", DATEADD ( StartDate, [Value], MONTH ),
EN BLANCO()
),
"Precio de facturación", PriceValue // Se ha cambiado el nombre para evitar colisiones
)
),
"BillingDateFiltered",
IF ( [Próxima fecha de facturación] <= 'Tabla de líneas de suscripción'[Fecha de finalización], [Próxima fecha de facturación], BLANK() )
)

Saludos

Hammad.

Syndicate_Admin
Administrator
Administrator

Hola @v-mdharahman ,

Pido disculpas por no haber respondido todavía. Estoy muy ocupado en este momento y tuve que posponer este tema. Echaré un vistazo a la solución propuesta lo antes posible y le daré algunos comentarios.

¡Gracias por su ayuda y saludos cordiales

Teniente

Hola @Tendo,

Gracias por volver y confirmar, por favor contáctenos cuando tenga más información sobre este tema.

Saludos

Hammad.

Hola @Tendo,
Espero que todo vaya bien por tu parte. No hemos recibido respuesta suya, así que quería comprobar si el problema se resolvió. En caso afirmativo, marcar la solución útil sería increíble para otros que podrían encontrarse con lo mismo.
¿Sigues atascado? No te preocupes, envíanos un mensaje y podemos volver a hablar del tema.

Saludos

Hammad.

Hola @Tendo,
Nos dimos cuenta de que no ha habido ninguna actividad reciente en este hilo, así que quería comprobar si tuviste la oportunidad de ver la respuesta proporcionada anteriormente o si el problema se resolvió por tu parte.

Si aún necesita ayuda, simplemente responda aquí y lo retomaremos desde donde lo dejamos.

Saludos

Hammad.

Syndicate_Admin
Administrator
Administrator

Hola @Tendo,

Gracias por ponerse en contacto con el foro de la comunidad de Microsoft Fabric.

Para lograr una tabla dinámica que muestre las próximas fechas de facturación de los próximos 10 años por cliente y suscripción, en función de la próxima fecha de facturación actual de su ERP, deberá generar una tabla calculada en Power BI mediante DAX que lea la "Próxima fecha de facturación" actual (de la tabla de dimensiones) y compruebe la frecuencia de pago (mensual, anualmente, etc.). Debe agregar de forma iterativa fechas de facturación futuras en función de esa frecuencia y se detiene en la fecha de finalización del contrato o en una ventana máxima de 10 años.

DAX:

SiguienteBillingSchedule =
VAR MaxAños = 10
DEVOLUCIÓN
ADDCOLUMNS (
GENERAR (
FILTRO (
'Tabla de líneas de suscripción',
NOT ISBLANK ( [FutureBillingDate] )
),
VAR CustomerName = RELATED ( 'Tabla de contratos de suscripción del cliente' [Cliente] )
VAR ContractNumber = 'Tabla de líneas de suscripción'[Número de contrato de suscripción]
Precio VAR = 'Tabla de líneas de suscripción'[Precio]
Fecha de inicio de VAR = [FutureBillingDate]
VAR EndDate = 'Tabla de líneas de suscripción'[Fecha de finalización]
Frecuencia VAR = 'Tabla de líneas de suscripción'[Frecuencia de pago]
VAR MaxDate = MIN ( EndDate, EDATE ( StartDate, 12 * MaxYears ) )
DEVOLUCIÓN
ADDCOLUMNS (
GENERATESERIES ( 0, MaxYears * 12, 1 ),
"Cliente", CustomerName,
"Número de contrato de suscripción", ContractNumber,
"Próxima fecha de facturación",
INTERRUPTOR (
VERDADERO (),
Frecuencia = "Anual", DATEADD ( StartDate, [Valor], AÑO ), ),
Frecuencia = "Mensual", DATEADD ( StartDate, [Valor], MES ), ),
EN BLANCO()
),
"Precio", Precio
)
),
"BillingDateFiltered",
IF ( [Próxima fecha de facturación] <= 'Tabla de líneas de suscripción' [Fecha de finalización], [Próxima fecha de facturación], BLANK() )
)

Esto creará una tabla con una fila por fecha de facturación futura por contrato. Puede filtrar aún más BillingDateFiltered en el informe para quitar las filas en blanco. Y si sus frecuencias varían (trimestral, semestral, etc.), puede expandir la lógica SWITCH en consecuencia.

Si no entiendo sus necesidades o aún tiene problemas con él, no dude en hacérnoslo saber.

Saludos
Hammad.
Equipo de apoyo a la comunidad

Hola @v-mdharahman ,

finalmente tengo tiempo para comprobar si tu solución funciona.:-)

En primer lugar, muchas gracias por su ayuda!!

Tengo una pregunta. Después de "Switch", ¿la frecuencia es un VAR? No funciona para mí.

Muchas gracias y un saludo cordial

Teniente 🙂

@v-mdharahman , por favor, olvídalo. Encontré mi error. Acabo de darle a su frecuencia VAR un nombre diferente en mi código ... 🙈

Hola @Tendo,

Como no hemos tenido noticias suyas, simplemente seguimos con nuestro mensaje anterior. Me gustaría confirmar si ha resuelto con éxito este problema o si necesita más ayuda.

En caso afirmativo, puede compartir su solución alternativa y marcarla como una solución para que otros usuarios también puedan beneficiarse. Si encuentra una respuesta particularmente útil para usted, también puede marcarla como una solución.
Si es así, sería muy útil para la comunidad si pudieras marcar la respuesta que más te haya ayudado. Si todavía estás buscando orientación, no dudes en darnos una actualización, estamos aquí para ayudarte.

Saludos

Hammad.

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

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

July PBI25 Carousel

Power BI Monthly Update - July 2025

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

Top Solution Authors
Top Kudoed Authors