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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Crear una relación utilizando un entre dos columnas

Hola

Estoy consultando Microsoft Business Central. Tiene dos mesas. La tabla de datos con EntityID, y una tabla de datos de usuario que tiene "EntityID from" y "EntityID to".

Si mi EntityID es 6, ¿cómo puedo crear una relación con la tabla de datos de usuario si "EntityID de" es 1 y "EntityID a" es 10? ya que 6 está entre 1 y 10?

¿Es esto posible?

La tabla de datos de usuario tiene una columna de usuario que quiero mostrar en la tabla de datos.

Saludos

Graham

1 ACCEPTED SOLUTION

En el editor de consultas, puede definir una columna personalizada como una lista:

{[#"From Entry No."]..[#"To Entry No."]}

Elimine las columnas innecesarias y expanda la columna de lista.

Aquí hay una consulta M completa que puede pasar en su Editor Avanzado:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUTIw1Dc00DcyMAJx3IsSMxJzFYLyk7OBPM8QIOGUWJKcYWAAkgVjU6VYnWglI5BOIySdwZm5+XkKTolgjcGJOanFCL0gxYZmQMLIDKzZGKTZGEmzV35GnoJLfnkqpl6QWiNzIGFsoBQbCwA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"No." = _t, #"Creation Date" = _t, #"User ID" = _t, Source = _t, #"Journal Batch Name" = _t, #"From Entry No." = _t, #"To Entry No." = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"No.", Int64.Type}, {"Creation Date", type date}, {"User ID", type text}, {"Source", type text}, {"Journal Batch Name", type text}, {"From Entry No.", Int64.Type}, {"To Entry No.", Int64.Type}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Entrie No.", each {[#"From Entry No."]..[#"To Entry No."]}, type list),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"No.", "From Entry No.", "To Entry No."}),
    #"Expanded Entrie No." = Table.ExpandListColumn(#"Removed Columns", "Entrie No."),
    #"Reordered Columns" = Table.ReorderColumns(#"Expanded Entrie No.",{"Entrie No.", "Creation Date", "User ID", "Source", "Journal Batch Name"})
in
    #"Reordered Columns"

View solution in original post

9 REPLIES 9
Syndicate_Admin
Administrator
Administrator

No creo que esto sea posible en el propio DAX. Haría esto en su proceso etl, donde tal vez agregaría una nueva columna de clave que se conectaría a EntityID.

Syndicate_Admin
Administrator
Administrator

No es posible. Las relaciones tienen que coincidir con las claves, no solo compararlas.

La solución sería expandir la tabla de datos de usuario para tener una fila por entidad.

Hola AlexisOlson

¿Cómo expandiría la tabla de datos de usuario para tener una fila por entidad en Power BI?

Saludos

Graham

No @GrahamR99,

¿Podría proporcionar algunos datos ficticios con la salida esperada para la prueba?

Saludos
Kelly

¿Respondí a su pregunta? ¡Marque mi respuesta como una solución!

Hola @v-kelly-msft

Estos son mis datos;

No.Fecha de creaciónID de usuarioFuenteNombre del lote de diarioDesde la entrada No.A la entrada No.
101/10/2021Roca GrahamESOLote001115
202/10/2021Simon VolverVentasLote0021626
303/10/2021Juan SordoVentasLote0032730

Lo quiero así;

Entrie No.Fecha de creaciónID de usuarioFuenteNombre del lote de diario
101/10/2021Roca GrahamESOLote001
201/10/2021Roca GrahamESOLote001
301/10/2021Roca GrahamESOLote001
401/10/2021Roca GrahamESOLote001
501/10/2021Roca GrahamESOLote001
601/10/2021Roca GrahamESOLote001
701/10/2021Roca GrahamESOLote001
801/10/2021Roca GrahamESOLote001
901/10/2021Roca GrahamESOLote001
1001/10/2021Roca GrahamESOLote001
1101/10/2021Roca GrahamESOLote001
1201/10/2021Roca GrahamESOLote001
1301/10/2021Roca GrahamESOLote001
1401/10/2021Roca GrahamESOLote001
1501/10/2021Roca GrahamESOLote001
1602/10/2021Simon VolverVentasLote002
1702/10/2021Simon VolverVentasLote002
1802/10/2021Simon VolverVentasLote002
1902/10/2021Simon VolverVentasLote002
2002/10/2021Simon VolverVentasLote002
2102/10/2021Simon VolverVentasLote002
2202/10/2021Simon VolverVentasLote002
2302/10/2021Simon VolverVentasLote002
2402/10/2021Simon VolverVentasLote002
2502/10/2021Simon VolverVentasLote002
2602/10/2021Simon VolverVentasLote002
2703/10/2021Juan SordoVentasLote003
2803/10/2021Juan SordoVentasLote003
2903/10/2021Juan SordoVentasLote003
3003/10/2021Juan SordoVentasLote003

¿Cómo lo hago?

Saludos

GrahamR99

No @GrahamR99,

Basándome en mi subestimación, creo 2 relaciones entre las 2 tablas, una está activa y la otra está inactiva, como se muestra a continuación:

vkellymsft_1-1635130446274.png

vkellymsft_0-1635130427747.png

Luego, puede crear fácilmente las columnas que necesita, como las siguientes:

_userID =
CALCULATE (
    MAX ( 'user data'[User ID] ),
    FILTER (
        'user data',
        'data'[Entrie No.] >= 'user data'[From Entry No.]
            && 'data'[Entrie No.] <= 'user data'[To Entry No.]
    )
)

Y verás:

vkellymsft_2-1635130536238.png

Para mi archivo .pbxi de muestra, pls ver adjunto.

Saludos
Kelly

¿Respondí a su pregunta? ¡Marque mi respuesta como una solución!

En el editor de consultas, puede definir una columna personalizada como una lista:

{[#"From Entry No."]..[#"To Entry No."]}

Elimine las columnas innecesarias y expanda la columna de lista.

Aquí hay una consulta M completa que puede pasar en su Editor Avanzado:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUTIw1Dc00DcyMAJx3IsSMxJzFYLyk7OBPM8QIOGUWJKcYWAAkgVjU6VYnWglI5BOIySdwZm5+XkKTolgjcGJOanFCL0gxYZmQMLIDKzZGKTZGEmzV35GnoJLfnkqpl6QWiNzIGFsoBQbCwA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"No." = _t, #"Creation Date" = _t, #"User ID" = _t, Source = _t, #"Journal Batch Name" = _t, #"From Entry No." = _t, #"To Entry No." = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"No.", Int64.Type}, {"Creation Date", type date}, {"User ID", type text}, {"Source", type text}, {"Journal Batch Name", type text}, {"From Entry No.", Int64.Type}, {"To Entry No.", Int64.Type}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Entrie No.", each {[#"From Entry No."]..[#"To Entry No."]}, type list),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"No.", "From Entry No.", "To Entry No."}),
    #"Expanded Entrie No." = Table.ExpandListColumn(#"Removed Columns", "Entrie No."),
    #"Reordered Columns" = Table.ReorderColumns(#"Expanded Entrie No.",{"Entrie No.", "Creation Date", "User ID", "Source", "Journal Batch Name"})
in
    #"Reordered Columns"

Gracias por su ayuda a todos, fue genial.

Depende de cómo se almacenen sus datos, pero este es un ejemplo de una transformación similar:

https://stackoverflow.com/questions/65030224

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

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.