Forum Discussion
Combinar tablas vittuales
Hola a todos,
Tengo 2 variables de tabla virtual en el siguiente código DAX: table1 y table2. Pero no sé cómo fusionar virtualmente
Dummy á var table0 ? SELECTCOLUMNS(FILTER('Master table','Master table'[Cantidad de transacciones]<>0),"Fecha",'Tabla maestra'[Fecha],"Precio de transacción",'Tabla maestra'[Precio de transacción'[Precio de transacción ],"Cantidad de transacciones", 'Tabla maestra'[Cantidad de transacciones], "Nombre de seguridad",'Tabla maestra'[Nombre de seguridad],"Categoría",'Tabla maestra'[Categoría],"Sub-categoría",'Tabla maestra'[Sub-Categoría])
var table1 á ADDCOLUMNS(table0,"Date rank",RANKX(FILTER(table0,[Security Name]-EARLIER([Security Name])),[Date],ASC,Dense))
var table2 - SUMMARIZE('Master table','Master table'[Security name],"sold quantity",CALCULATE(SUM('Master table'[Sold quantity])))
¿¿¿devolución???
Salida para table1
| Fecha | Precio de las transacciones | Cantidad de transacciones | Nombre de seguridad | Categoría | Subcategoría | Rango de fecha |
| 10-01-2017 00:00 | 30 | 100 | Mirae | Fondo Mutuo | Equidad | 1 |
| 10-02-2017 00:00 | 30 | 100 | Mirae | Fondo Mutuo | Equidad | 2 |
| 10-03-2017 00:00 | 30 | 100 | Mirae | Fondo Mutuo | Equidad | 3 |
| 10-04-2017 00:00 | 30 | 100 | Mirae | Fondo Mutuo | Equidad | 4 |
| 10-05-2017 00:00 | 30 | 100 | Mirae | Fondo Mutuo | Equidad | 5 |
| 15-05-2017 00:00 | 30 | 100 | Mirae | Fondo Mutuo | Equidad | 6 |
| 22-05-2017 00:00 | 30 | 100 | Mirae | Fondo Mutuo | Equidad | 7 |
| 12-06-2017 00:00 | 30 | 100 | Mirae | Fondo Mutuo | Equidad | 8 |
| 10-07-2017 00:00 | 30 | 100 | Mirae | Fondo Mutuo | Equidad | 9 |
| 10-08-2017 00:00 | 40 | 200 | Mirae | Fondo Mutuo | Equidad | 10 |
| 17-04-2018 00:00 | 40 | 200 | Banco HDFC | Acciones | Acciones | 1 |
| 17-04-2018 00:00 | 40 | 200 | Kei | Acciones | Acciones | 1 |
| 17-04-2018 00:00 | 40 | 200 | Confianza | Acciones | Acciones | 1 |
| 12-03-2019 00:00 | 40 | 200 | Sundaram | Fondo Mutuo | Equidad | 1 |
| 20-05-2019 00:00 | 40 | 200 | Pinturas asiáticas | Acciones | Acciones | 1 |
| 20-05-2019 00:00 | 40 | 200 | HDFC | Acciones | Acciones | 1 |
| 20-05-2019 00:00 | 40 | 200 | Pidilite | Acciones | Acciones | 1 |
| 23-10-2019 00:00 | 40 | 200 | Kotak Mahindra | Acciones | Acciones | 1 |
| 19-12-2019 00:00 | 50 | 300 | Eje bluechip | Fondo Mutuo | Equidad | 1 |
| 23-12-2019 00:00 | 50 | 300 | Agujero | Acciones | Acciones | 1 |
| 27-02-2020 00:00 | 50 | 300 | HDFC | Acciones | Acciones | 2 |
| 27-02-2020 00:00 | 50 | 300 | Banco HDFC | Acciones | Acciones | 2 |
| 02-03-2020 00:00 | 50 | 300 | Agujero | Acciones | Acciones | 2 |
| 02-03-2020 00:00 | 50 | 300 | Confianza | Acciones | Acciones | 2 |
| 07-04-2020 00:00 | 50 | 300 | Titan | Acciones | Acciones | 1 |
| 09-04-2020 00:00 | 50 | 300 | Tcs | Acciones | Acciones | 1 |
| 09-07-2020 00:00 | 50 | 300 | Eje a corto plazo | Fondo Mutuo | Deuda | 1 |
Salida para table2
| Nombre de seguridad | cantidad vendida |
| Pinturas asiáticas | 0 |
| HDFC | 0 |
| Agujero | 0 |
| Confianza | 5 |
| Eje a corto plazo | 0 |
| Tcs | 0 |
| Kei | 0 |
| Titan | 0 |
| Sensex | 0 |
| Banco HDFC | 0 |
| Kotak Mahindra | 0 |
| Mirae | 0 |
| Sundaram | 0 |
| Pidilite | 0 |
| Eje bluechip | 0 |
En la instrucción return de DAX, quiero que un código combine estas tablas virtualmente usando su columna de nombre de seguridad respectivamente. No puedo crear una tabla independiente para esta operación debido a otras restricciones. También soy nuevo en Power BI, así que será de gran ayuda para mí si alguien de ustedes pudiera compartirme su solución para esto
Gracias
@randyvik Sin embargo, esto funciona:
Table 4 = VAR __Table2 = { (1,"A","Black"),(2,"B","White"),(3,"C","Blue")} VAR __Table3 = { (1,"A","One"),(2,"B","Two"),(3,"C","Three")} VAR A = SELECTCOLUMNS(__Table2,"Key",[Value1],"Color",[Value3]) VAR B = SELECTCOLUMNS(__Table3,"Key",[Value1],"Number",[Value3]) RETURN NATURALINNERJOIN(A, B)@marcorusso ¡Ayuda! Consulte las tablas maestras en el PBIX adjunto. Así como el Cuadro 2 y el Cuadro 3 y el Cuadro 5 (error)
15 Replies
- amitchandak
Super User
@randyvik, tienes unión interior natural y Cross join
Refiera a este documento: https://www.sqlbi.com/articles/from-sql-to-dax-joining-tables/
- randyvikNew Member
Gracias por su rápida respuesta. Intenté el siguiente código
Dummy á var table0 ? SELECTCOLUMNS(FILTER('Master table','Master table'[Cantidad de transacciones]<>0),"Fecha",'Tabla maestra'[Fecha],"Precio de transacción",'Tabla maestra'[Precio de transacción'[Precio de transacción ],"Cantidad de transacciones", 'Tabla maestra'[Cantidad de transacciones], "Nombre de seguridad",'Tabla maestra'[Nombre de seguridad],"Categoría",'Tabla maestra'[Categoría],"Sub-categoría",'Tabla maestra'[Sub-Categoría])var table1 á ADDCOLUMNS(table0,"Date rank",RANKX(FILTER(table0,[Security Name]-EARLIER([Security Name])),[Date],ASC,Dense))var table2 - SUMMARIZE('Master table','Master table'[Security name],"sold quantity",CALCULATE(SUM('Master table'[Sold quantity])))resultado de var: NATURALLEFTOUTERJOIN(table1,table2)resultado de retornoSin embargo, aparece un error que indica que "No se han detectado columnas de combinación comunes. La función de combinación 'NATURALLEFTOUTERJOIN' requiere al menos una columna de combinación común". ¿Cómo se especifica la columna join en una tabla virtual?- Greg_Deckler
Community Champion
@randyvik Permítanme burlarme de esto, NATURALINNERJOIN puede estar enloqueciendo a veces!
- Greg_Deckler
Community Champion
@randyvik Usaría NATURALINNERJOIN para fusionarse.