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

Combinar dimensión a varios hechos mediante fecha entre

Hola a todos

Tenemos una tabla de dimesión A vinculada a 3 tablas de hechos (B, C, D) y utilizada en el mismo informe.

El vínculo entre la moneda de diez centavos A y el hecho B se basa en A.ID=B.ID y B.Date entre A.startDate y A.StartDate,

El vínculo entre la moneda de diez centavos A y el hecho C se basa en A.ID1=C.ID1 y C.Date entre A.startDate y A.StartDate,

El vínculo entre la moneda de diez centavos A y el hecho D se basa en A.ID2=D.ID2 y D.Date entre A.startDate y A.StartDate

Encontré un escenario con una moneda de diez centavos vinculada a un hecho usando fecha entre, y la solución fue crear una lista de DatesBetweens y combinar las dos tablas. Pero en nuestro caso la dimensión se usa con 3 hechos en el mismo informe, así que me estoy quedando sin idea sobre cómo modelarla.

¿Puede compartir ideas sobre cómo lo modelaría en Power BI?

Gracias de antemano,

joseph

6 REPLIES 6
Syndicate_Admin
Administrator
Administrator

@Jospeh123,

¿Sería capaz de proporcionar datos de muestra? Su publicación indica "entre A.startDate y A.StartDate", que suena como dos columnas StartDate. ¿La tabla de dimensiones tiene StartDate y EndDate?

hola

Gracias por su respuesta y lo siento por el retraso.

Tienes razón, acabo de cometer un error, la fecha está entre A.startDate y A.EndDate :

El vínculo entre la moneda de diez centavos A y el hecho B se basa en A.ID=B.ID y B.Date entre A.startDate y A.EndDate,

El vínculo entre la moneda de diez centavos A y el hecho C se basa en A.ID=C.ID1 y C.Date entre A.startDate y A.EndDate,

El vínculo entre la dimesión A y el hecho D se basa en A.ID=D.ID2 y D.Date entre A.startDate y A.EndDate

Dimensión A :

identificaciónMesure1fecha
95631029/12/2020
8411103/09/2020
8795206/11/2020
8027721/12/2020
11867329/12/2020
10523815/01/2021
9563609/03/2020
63951003/09/2020
8027617/08/2020
6491121/12/2020
9848103/12/2020
9845107/01/2020
11053326/01/2021
6395128/04/2020
6491328/08/2020

Hecho B :

identificaciónmedirfecha
110816991623/11/2020
98436020220/01/2020
118041346122/07/2020
75827095610/02/2020
106548689417/01/2020
75827095626/10/2020
90226991625/03/2021
88304457929/03/2021
88304457927/08/2020
84468398924/12/2020
81581346112/01/2021
64308075107/02/2020
90226991610/02/2020
90226991604/03/2020
89266103615/04/2021
84468398912/08/2020
84468398927/08/2020
81581346126/10/2020
75827095601/04/2020
71986118706/05/2020
71986118723/11/2020

Hecho C :

identificaciónMesure1fecha
95631029/12/2020
8411103/09/2020
8795206/11/2020
8027721/12/2020
11867329/12/2020
10523815/01/2021
9563609/03/2020
63951003/09/2020
8027617/08/2020
6491121/12/2020
9848103/12/2020
9845107/01/2020
11053326/01/2021
6395128/04/2020
6491328/08/2020

Gracias de antemano,

@Jospeh123,

Pruebe este enfoque.

1. En Power Query, cree una columna DimKey en la tabla DimensionA que sea una concatenación de ID y StartDate. Si los datos están estructurados correctamente, cada fila debe tener una combinación única de ID y StartDate.

Text.From([ID]) & "-" & Date.ToText([StartDate], "yyyymmdd")

DataInsights_1-1627312956862.png

2. En Power Query, cree una columna DimKey en cada tabla de hechos que recupere DimensionA[DimKey]. El ejemplo siguiente es para la tabla FactB.

Table.SelectRows(
      DimensionA,
      (LookupTable) =>
        [ID] = LookupTable[ID]
        and [Date] >= LookupTable[StartDate]
        and [Date] <= LookupTable[EndDate]
    )

Después de crear la columna, haga clic en el icono Expandir y seleccione DimKey.

DataInsights_3-1627313176951.png

DataInsights_2-1627312971951.png

3. Crear una relación entre DimensionA y cada tabla de hechos basada en DimKey.

DataInsights_0-1627312913322.png

hola

¡Muchas gracias por su respuesta!

Estoy tratando de implementarlo, y cuando expando la columna y selecciono DimKey, me lleva mucho tiempo cargarlo. Se ha estado cargando durante 14 horas durante solo 225 000 filas (para una tabla de hechos). Esta tabla de hechos es la más pequeña y contiene más de 300 000rows. Por lo tanto, me pregunto si debo esperar a que termine de cargarse, si habrá problemas de rendimiento más adelante para las actualizaciones ...

Gracias de antemano,

@Jospeh123,

¿Tiene la capacidad de escribir SQL personalizado? Si es así, podría mover esta lógica a la base de datos y probablemente obtener un mejor rendimiento.

Otra opción es usar un flujo de datos en el servicio Power BI (un flujo de datos es Power Query online). Conectaría su pbix al flujo de datos.

¡Muchas gracias por su respuesta!

No tengo esta capacidad todavía.

Estamos trabajando con PBI en el servidor de informes, por lo que entiendo que la única manera es personalizar el modelo en la base de datos.

Gracias de nuevo!

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.