Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
4 years ago

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!

merge table.PNG

8 Replies

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      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ón
      NATURALINNERJOIN(master, nómina)
      • Syndicate_Admin's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        @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 )
        
  • 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.

  • @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's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      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.

  • 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's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      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.