Forum Discussion
combinar tablas en DAX
Hola
Tengo dos tablas, hay una relación de muchos a muchos entre las dos tablas. ¿Es posible combinar las columnas para formar una tabla combinada en DAX?
¡Gracias!
8 Replies
- Syndicate_Admin
Administrator
@Jeanxyz, Crossjoin, unión naturalinner, etc.
recomienda
https://www.sqlbi.com/articles/from-sql-to-dax-joining-tables/
- Syndicate_Admin
Administrator
He intentado crear una tabla de combinación con la fórmula DAX a continuación y recibí un mensaje de error: "Se detectó una columna de unión incompatible, (''[clave de fecha de nómina]). ' NATURALINNERJOIN' no admite uniones mediante el uso de columnas con diferentes tipos de datos o linaje".
Para su información, el colum de unión es [clave de fecha de nómina], se almacena como texto en ambas tablas, por lo que no estoy seguro de por qué aparece el mensaje de error.
merge_table =var master=filter(SELECTCOLUMNS(Master_Resources_new,"A EE/CC ID",[A EE/CC ID],"Employee Name",[Employee Name],"Function",[Function],"Hiring Status",[Hiring Status],"Location",[Location],"Entity",[Entity],"Entity-CC Group",[Entity-CC Group],"Team",[Team],"Type of contract",[Type of Contract],"Actual Start Date",[Actual Start Date],"Actual End Date",[Actual End Date],"A OTE",[A OTE], "payroll datekey",[payroll datekey],"split",[split],"Resource Cost Check",[Resource Cost check]),[Resource Cost Check]="include")var payroll=selectcolumns(payroll_est_group,"payroll datekey",[payroll datekey],"Pay Component",[Pay Component],"Amount",[Amount],"Currency",[Currency])devoluciónNATURALINNERJOIN(master, nómina)- Syndicate_Admin
Administrator
@Jeanxyz ayuda esto?
merge_table = VAR master = FILTER ( SELECTCOLUMNS ( Master_Resources_new, "A EE/CC ID", [A EE/CC ID], "Employee Name", [Employee Name], "Function", [Function], "Hiring Status", [Hiring Status], "Location", [Location], "Entity", [Entity], "Entity-CC Group", [Entity-CC Group], "Team", [Team], "Type of contract", [Type of Contract], "Actual Start Date", [Actual Start Date], "Actual End Date", [Actual End Date], "A OTE", [A OTE], "payroll datekey", [payroll datekey]&"", "split", [split], "Resource Cost Check", [Resource Cost check] ), [Resource Cost Check] = "include" ) VAR payroll = SELECTCOLUMNS ( payroll_est_group, "payroll datekey", [payroll datekey]&"", "Pay Component", [Pay Component], "Amount", [Amount], "Currency", [Currency] ) RETURN NATURALINNERJOIN ( master, payroll )
- Syndicate_Admin
Administrator
Hola
¿Por qué quieres hacer esto en DAX? ¿Por qué no en el Editor de consultas? Allí simplemente puede unirse a las 2 tablas basadas en la identificación del empleado y la fecha de pago / período de período.
- Syndicate_Admin
Administrator
@Jeanxyz Estoy totalmente de acuerdo con @Ashish_Mathur. ¿Qué problema estás tratando de resolver? Hacer la fusión en DAX no debería ser un problema, pero ¿es realmente necesario? Seamos honestos, si sabemos lo que está tratando de lograr, tal vez haya mejores maneras, así que supongo que, si nos ayuda a comprender lo que está buscando, estoy seguro de que los cerebros brillantes aquí le darán una solución increíble. Solo mis 2 centavos.
P
- Syndicate_Admin
Administrator
Sí, será pan comido fusionar dos tablas en power query. Sin embargo, Power Query también tiene sus limitaciones en otro lugar. Ya he creado una tabla de pago compleja utilizando DAX, como una nueva solicitud, el cliente quiere introducir el centro de costos y el factor dividido en la tabla de pago principal. Por lo tanto, tengo que fusionar la tabla en DAX.
- Syndicate_Admin
Administrator
Hay @Jeanxyz ,
Por favor, pruebe:
New Table = var _t= CROSSJOIN('Table 2',SELECTCOLUMNS('Table 1',"Cost Center",[Cost Center],"Cost Center split factor",[Cost Center split factor])) return ADDCOLUMNS(_t,"key",LOOKUPVALUE('Table 1'[key],'Table 1'[Pay date],[Pay period]))A continuación, cambie el nombre de la columna Período de pago
Saludos
Eyelyn Qin
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.- Syndicate_Admin
Administrator
Gracias, Everlyn. Sin embargo, mis 2 tablas no están bien estructuradas, si uso crossjoin() creará muchos registros incorrectos ya que ignora la relación de identificación del empleado.