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

Relación dependiente del tiempo

Hola.

Así que tengo una tabla de hechos, que incluye un proyecto / producto. Y luego tengo una tabla tenue con grupos de proyectos/productos. Así que esto funciona bien. Sin embargo, quiero la flexibilidad para cambiar las releationsships con el tiempo. Por ejemplo, el proyecto X está hasta 2020 incluido en el grupo de proyectos 1. Pero a partir de 2021 quiero que este mismo proyecto se incluya en el grupo de proyectos 2. Y quiero mantener la historia correcta, para que el proyecto aparezca en el grupo de proyectos 1 para los datos históricos de antes de 2021, pero en el grupo de proyecto 2 para los datos de 2021.

Lo que creo que sería una buena solución es que agredo dos columnas en mi tabla tenue con from_date y to_date. Podría usar el formato AAAA. Así que si to_date se establece en 202012 sólo daría un partido en períodos a y antes de diciembre de 2020.
Y luego agregaría una nueva fila en la tabla tenue con el mismo proyecto y el nuevo grupo de proyectos, con from_date 202101.

Entonces, ¿cómo establecería esta relación dependiente en mi modelo?

¿Es posible mantener esto como una mesa tenue con la relación de relaciones, o necesito fusionar la mesa tenue en la tabla de hechos para que esto funcione? Y si es así, ¿cuál sería la mejor manera de fusionar la mesa tenue a mi tabla de hechos, con algún tipo de "declaración si" en el año / mes? He intentado la combinación de consultas de energía antes, pero hizo que la actualización del modelo muy lento.... así que espero que haya otra manera?

1 ACCEPTED SOLUTION

Así que finalmente me di cuenta de esto. Agredo mi solución en caso de que alguien quiera saber cómo resolví esto.

Gracias @v-shex-msft por señalarme en la dirección correcta, este artículo me hizo darme cuenta de que mi problema era una tabla de dimensiones de tipo 2 que cambiaba lentamente:

https://docs.microsoft.com/en-us/power-bi/guidance/star-schema#slowly-changing-dimensions

No es fácil cuando es nuevo en Power BI y no sabe cómo se llaman todos los problemas. Una vez que me di cuenta de esto era mucho más fácil tratar de encontrar una solución en google y youtube.

Mi tabla de dimensiones se basa en un pliego de Excel para que no tenga marcas de tiempo ni registros de versiones. Así que la solución era, de hecho, agregar varias filas para un proyecto, con dos columnas para "dato_from" y "date_to". Dado que el proyecto ya no era uniqe ID hice una columna de índice. A continuación, agregué una columna en la tabla de hechos (para el mismo index_column_ID), y tuve que una búsqueda de filtro a la tabla tenue (basada en project_ID, date_from y date_to), para agregar index_ID derecho a la tabla de hechos.

Intenté dos versiones de esto en la consulta de energía, sin embargo, cuando intento agregar la columna en la tabla de hechos con la búsqueda para cada fila, la actualización de datos toma más tiempo del que me gustaría. Finalmente encontré un método en dax que evitó eso, por lo que resolvió mi problema de búsqueda y todavía mantuvo el tiempo de actualización baja. Se basa en este vídeo de youtube:

https://www.youtube.com/watch?v=BGcfaROCcto&t

Mi dax fomula al final, para agregar la columna de índice en la tabla de hechos:

dim_prosjekt_index = 
    CALCULATE(
        VALUES(x_LookupTable_z_ark[dim_prosjekt_index]),
        FILTER(x_LookupTable_z_ark,
            Datagrunnlag[dim_prosjekt_ID]=x_LookupTable_z_ark[dim_prosjekt_ID] && 
            Datagrunnlag[transaction_date]>=x_LookupTable_z_ark[date_from] && 
            Datagrunnlag[transaction_date] <= x_LookupTable_z_ark[date_to]
        )
    )

Primero traté de hacer esta búsqueda desde la mesa dim_project, que quiero vincular a la tabla de hechos con la relación. Pero me dio una referencia circular. Así que tuve que hacer lo mismo que en el video de youtube: hice una copia de la tabla de dim_project (lookuptable), hice la búsqueda a esta búsqueda para fint el index_ID correcto para agregar a la tabla de hechos, y luego hice la referencia a dim_project tabla.

Problema resuelto 🙂

View solution in original post

6 REPLIES 6
Syndicate_Admin
Administrator
Administrator

HAY @Hanspw,

Tal vez pueda agregar una nueva tabla para extraer datos de tabla sin procesar y agregar una columna personalizada para calcular el número de grupo dinámico en función de la última fecha.

DateGROUP =
VAR _list =
    ALL ( Table[Date] )
RETURN
    ADDCOLUMNS (
        _list,
        "Group",
            "Group "
                & (
                    MAXX ( _list, YEAR ( [Date] ) ) - YEAR ( [Date] ) + 1
                )
    )

A continuación, puede utilizar esta tabla de dimensión/puente para vincular la tabla sin procesar 'fecha' y la nueva tabla 'grupo'. (las nuevas asignaciones de grupos de tablas se producirán cambios dinámicos si se actualiza la última fecha)
saludos
Xiaoxin Sheng

Gracias por su ayuda. Esto suena como algo que podría probar. Estoy un poco inseguro cómo estas tablas se unirían.

Esta es mi relación de currenct de "Datagrunnlag" (tabla de hechos) a "Dim_prosjekt" (tabla de dimensiones para grupos de proyectos):

Hanspw_1-1612423985965.png

De hecho, la tabla tengo un campo de fecha para las transacciones (vamos a usar Mes). Y en la tabla de dimensiones puedo agregar una columna date_from y date_too para cada proyecto. Pero digamos que hago esto, y cambiar las dimensiones para digamos el proyecto X. A continuación, el proyecto X serían dos filas en la tabla de dimensiones. Una fila para el período activo hasta 2020 (con dato_too 202012) y una fila para el período activo a partir de 2021 (con date_from 202101). Entonces supongo que esta releationsship ya no será una relación de varios a uno, ya que el project_ID existen dos veces. Así que probablemente necesite conectar dos IDs juntos (Project_ID y algún tipo de verificador de fecha) para conseguir que la relación de relaciones de un muchos a uno de nuevo?

El date_verification debe comprobar el mes de cada transacción y, a continuación, conectarse a la fila derecha de la tabla de dimensiones.

Esta nueva tabla que usted sugiere, ¿esta nueva tabla sería algo entre estas dos tablas existentes, para activar este campo de verificación de fecha o estoy muy lejos?

No @Hanspw,

Parece que ya tienes una tabla de dimensiones de fecha. Si ese es el caso, puede asignar directamente los campos de "fecha" de la tabla de puentes a la tabla de dimensiones de fecha.

Por cierto, no es necesario preocuparse por el proyecto y la asignación de fecha, mantendrá el efecto de filtro basado en la dimensión de fecha y las relaciones de tabla de hechos.

De hecho, power bi es adecuado para usar 'esquema de estrella' para construir las relaciones en lugar de la relación 'cadena'.

Comprender el esquema de estrellas y la importancia de Power BI

saludos
Xiaoxin Sheng

Así que finalmente me di cuenta de esto. Agredo mi solución en caso de que alguien quiera saber cómo resolví esto.

Gracias @v-shex-msft por señalarme en la dirección correcta, este artículo me hizo darme cuenta de que mi problema era una tabla de dimensiones de tipo 2 que cambiaba lentamente:

https://docs.microsoft.com/en-us/power-bi/guidance/star-schema#slowly-changing-dimensions

No es fácil cuando es nuevo en Power BI y no sabe cómo se llaman todos los problemas. Una vez que me di cuenta de esto era mucho más fácil tratar de encontrar una solución en google y youtube.

Mi tabla de dimensiones se basa en un pliego de Excel para que no tenga marcas de tiempo ni registros de versiones. Así que la solución era, de hecho, agregar varias filas para un proyecto, con dos columnas para "dato_from" y "date_to". Dado que el proyecto ya no era uniqe ID hice una columna de índice. A continuación, agregué una columna en la tabla de hechos (para el mismo index_column_ID), y tuve que una búsqueda de filtro a la tabla tenue (basada en project_ID, date_from y date_to), para agregar index_ID derecho a la tabla de hechos.

Intenté dos versiones de esto en la consulta de energía, sin embargo, cuando intento agregar la columna en la tabla de hechos con la búsqueda para cada fila, la actualización de datos toma más tiempo del que me gustaría. Finalmente encontré un método en dax que evitó eso, por lo que resolvió mi problema de búsqueda y todavía mantuvo el tiempo de actualización baja. Se basa en este vídeo de youtube:

https://www.youtube.com/watch?v=BGcfaROCcto&t

Mi dax fomula al final, para agregar la columna de índice en la tabla de hechos:

dim_prosjekt_index = 
    CALCULATE(
        VALUES(x_LookupTable_z_ark[dim_prosjekt_index]),
        FILTER(x_LookupTable_z_ark,
            Datagrunnlag[dim_prosjekt_ID]=x_LookupTable_z_ark[dim_prosjekt_ID] && 
            Datagrunnlag[transaction_date]>=x_LookupTable_z_ark[date_from] && 
            Datagrunnlag[transaction_date] <= x_LookupTable_z_ark[date_to]
        )
    )

Primero traté de hacer esta búsqueda desde la mesa dim_project, que quiero vincular a la tabla de hechos con la relación. Pero me dio una referencia circular. Así que tuve que hacer lo mismo que en el video de youtube: hice una copia de la tabla de dim_project (lookuptable), hice la búsqueda a esta búsqueda para fint el index_ID correcto para agregar a la tabla de hechos, y luego hice la referencia a dim_project tabla.

Problema resuelto 🙂

Syndicate_Admin
Administrator
Administrator

Hay una manera más simple. Registre la relación de proyecto a grupo en la granularidad de nivel de día en una tabla de dimensiones adicional.

Suena muy interesante si hay una manera fácil de hacer esto. ¿Cómo se vería esta tabla de dimensiones adicional y cómo será la relación entre la tabla de hechos existente y project_group tabla de dimensiones, con esta nueva tabla de dimensiones adicionales?

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.