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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Syndicate_Admin
Administrator
Administrator

Modelado de varias relaciones de varios a varios basadas en un componente de lenguaje

Tengo un escenario en el que algunas de mis tablas tenues incluyen traducciones de valores de campo a varios idiomas. En cada tabla, la clave nativa es la combinación de una clave de idioma y un valor de código. Por ejemplo, este es el aspecto que podrían tener los datos para una tabla que almacena tipos de factura:

ASD85_0-1624071860293.png

En este ejemplo, también tendría mi campo InvoiceType en mi tabla de transacciones, y ese es el campo que se usaría para mi combinación. En la tabla de hechos, NO hay un componente de idioma. Mi proceso de pensamiento era que aunque esto causaría una relación de varios a varios entre mi tabla de tipo de factura y mi tabla de transacciones, efectivamente se trataría como una relación de uno a varios al final porque habría un filtro obligatorio en una sola clave de idioma.

Mi problema entra en juego cuando tengo varias tablas tenues que tienen un componente de lenguaje. Por ejemplo, supongamos que agrego una tabla para la organización de ventas a mi ejemplo anterior. Las relaciones se verían así:

ASD85_1-1624072279371.png

Sin embargo, no puedo usar las relaciones anteriores en Power BI, porque conduce a la ambigüedad entre la tabla de idioma y la tabla de transacciones. Esto es una obviedad en SQL, ya que el resultado deseado se podría lograr con una consulta como:

ASD85_2-1624072446377.png

Desafortunadamente, no puedo envolver mi cabeza alrededor de cómo lograr esto en Power BI. Pensé que esto sería un candidato para una tabla de puente, pero me encontré con el mismo problema allí ya que el producto cartesiano de código de tipo de factura y código de organización de ventas todavía resultó en ambigüedad debido a múltiples relaciones de varios a muchos. Creo que esto se podría lograr haciendo una combinación cruzada entre la tabla de transacciones y la tabla maestra de idiomas que luego me permitiría unirme en una concatenación de las claves de lenguaje y los valores de código para que termine con un uno a varios a la tabla de transacciones. La desventaja de eso es que mi tabla de transacciones se hincharía increíblemente debido a que mis registros totales se multiplican por muchos idiomas que tenga.

¿Hay alguna manera de lograr el resultado deseado de seleccionar un idioma en la tabla maestra de idiomas y hacer que restrinja cualquier tabla con un componente de idioma a los valores para el idioma seleccionado y luego hacer que esos valores filtren mi tabla de hechos?

8 REPLIES 8
Syndicate_Admin
Administrator
Administrator

@ASD85,

Pruebe esta solución.

1. Desconecte la tabla Language Master del modelo de datos.

2. Establezca la dirección del filtro cruzado de las relaciones de la tabla dim /fact en single (dim table filters fact table).

3. Cree medidas que utilicen el VALOR SELECCIONADO de la tabla Language Master (la segmentación de datos de idioma se basa en la tabla Language Master).

4. Utilice estas medidas como filtros en el objeto visual para mostrar el idioma seleccionado de la columna dim.

Modelo de datos:

DataInsights_0-1624232727942.png

Medidas:

Invoice Type Selected Language = 
VAR vSelectedLanguage =
    SELECTEDVALUE ( 'Language Master'[LanguageKey] )
VAR vResult =
    IF ( MAX ( 'Invoice Type'[LanguageKey] ) = vSelectedLanguage, 1 )
RETURN
    vResult

Sales Org Selected Language = 
VAR vSelectedLanguage =
    SELECTEDVALUE ( 'Language Master'[LanguageKey] )
VAR vResult =
    IF ( MAX ( 'Sales Org'[LanguageKey] ) = vSelectedLanguage, 1 )
RETURN
    vResult

Sum Amount = SUM ( Transactions[Amount] )

Agregar filtros al objeto visual:

DataInsights_5-1624233577075.png

resultado:

DataInsights_2-1624233039550.png

--------------------------------------------------------------

DataInsights_4-1624233102920.png

En realidad no son las imágenes las que me están dando problemas. Tenemos otros casos en los que estamos haciendo exactamente lo que ha mostrado aquí con tablas desconectadas.

El desafío es con el panel de filtros. En lugar de que la descripción de un código determinado se repita para cada idioma en el panel de filtros, el cliente desea devolver solo las descripciones traducidas para el idioma seleccionado. Las tablas desconectadas funcionarían si agrediéramos objetos visuales de filtro al lienzo del informe, pero muchos de estos campos traducidos se usarán para filtrar con tan poca frecuencia (en relación con otros campos) que no justifican tener objetos visuales de filtro dedicados.

Syndicate_Admin
Administrator
Administrator

Aquí hay otro, pero de los comentarios a continuación el tema del que habla Ruth aún no ha sido rectificado (y nadie sabe si alguna vez lo será).

Informes multilingües multilingües en Power BI - YouTube

Creo que ya me he encontrado con este video. Los encabezados visuales no son realmente una preocupación porque ya estamos haciendo traducciones de metadatos a través del extremo XMLA. En cuanto a cambiar los valores con parámetros, no creo que sea ni siquiera una opción para los usuarios finales en una aplicación, ¿verdad? También requeriría una actualización del conjunto de datos, creo, y eso sería un factor decisivo.

Creo que lo más cerca que podría llegar a algo como esto sería pasar a través de los parámetros en la dirección URL del informe, pero no estoy seguro de si estos persisten una vez que el usuario comienza a navegar a otras páginas.

Syndicate_Admin
Administrator
Administrator

Siguiendo con mi respuesta anterior... Si tiene traducciones para las dimensiones, tiene que colocarlas directamente en las dimensiones COMO COLUMNAS, no en filas separadas. De esta manera, todos sus posibles "muchos a muchos" serán eliminados. A continuación, puede crear vistas del cubo o modelo en las que ocultará las columnas que no necesita. Las personas deben conectarse a la vista que desean en función de su idioma.

La creación de copias / vistas del modelo por idioma está en mi bolsillo trasero en el caso de que no haya absolutamente ninguna otra solución a este problema. Esa fue en realidad la primera idea que le presenté a mi cliente, pero son inflexibles acerca de tener un solo informe desde el punto de vista de simplificar tanto el desarrollo como el mantenimiento.

Estamos migrando sus informes actuales desde Qlik, y Qlik maneja este problema sin problemas a través de la capacidad de agregar declaraciones condicionales a prácticamente cualquier objeto en un informe, por lo que sería una conversación difícil decirles que esta funcionalidad que han utilizado durante años en su solución antigua no está disponible en la nueva solución en la que están invirtiendo mucho tiempo y dinero.

Syndicate_Admin
Administrator
Administrator

Power BI se ha creado con la idea de que la fuerza bruta debe ser su principal fortaleza. Además, los algoritmos de compresión se aseguran de que los millones y millones de filas se manejen correctamente con velocidad. En segundo lugar, las relaciones de varios a varios en Power BI se han diseñado para resolver un problema concreto: el de la granularidad. No parece que lo tengas en tu modelo, por lo que tus relaciones son simplemente incorrectas. El problema de granularidad se plantea cuando una tabla necesita unirse a otra en un nivel superior al suyo propio. Una relación clásica de varios a varios solo se puede controlar, tanto en Power BI como en cubos de MD y almacenes de datos, a través de tablas de puente. solamente. Además, si comienza a crear relaciones directamente entre tablas de hechos, prepárese para meterse en grandes problemas antes de lo que podría pensar. Si desea mantenerse cuerdo y tener un tiempo fácil para crear DAX simple y rápido, cree un modelo que sea un esquema de estrella adecuado. Si renuncias a este consejo, todo el infierno se desatará.

Te han avisado 🙂

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors