Forum Discussion
Informe de objetos visuales de tabla
Necesito crear un informe de objetos visuales de tabla que cumpla con la condición cuando se creó ayer y en >9 meses a partir de los informes a continuación
| Nombre de la tabla: ciclo; Nota:Varias veces Artículo# encontrado | ||
| Artículo# | Orden:Tipo de tarjeta | DESPUÉS# |
| 1-VERTICAL | Tarjeta | 21390 |
| 1-VERTICAL | tarjeta | 21390 |
| 1-VERTICAL | tarjeta | 21390 |
| 567890 | Sin tarjeta | 21391 |
| 567890 | sin tarjeta | 21391 |
| 567891 | tarjeta | 21392 |
| Nombre de la tabla : POItem; Nota:Varias veces Artículo# encontrado | ||
| Artículo# | Createdwhen | Nombre del proveedor |
| 36 en posición vertical | PO no creado ayer | Bien hecho |
| 36 en posición vertical | PO no creado ayer | Bien hecho |
| 36 en posición vertical | pO creado ayer | Bien hecho |
| 38 en posición vertical | PO no creado ayer | proveedor1 |
| Nombre de la tabla:Demanda ; Nota: No hay número de artículo duplicado | ||
| Número de artículo | Disponible>9 meses | A mano>6 meses |
| P123-AB-GG-AA-US | Menos de 9 meses disponibles | Menos de 6 meses disponibles |
| P123-AB-T-Z-US | más de 9 meses en disponibilidad | másMás de 6 meses en disponibilidad |
| P123-E-BB-Z-US | Menos de 9 meses disponibles | Menos de 6 meses disponibles |
| 215B14567 | más de 9 meses en disponibilidad | más de 6 meses en disponibilidad |
5 Replies
- Syndicate_Admin
Administrator
Hola @bzeeblitz ,
Para lograr el informe de Power BI deseado que filtra los datos en función de las condiciones Createdwhen = 'PO creado ayer' y disponible > 9 meses, siga estos pasos mediante DAX. En primer lugar, importe las tablas Cycle, POItem y Demand en Power BI y establezca relaciones entre ellas. En concreto, vincule Cycle[Item#] a POItem[Item#] y Cycle[Item#] a Demand[Item Number].
A continuación, cree una tabla calculada denominada FilteredPOItem para filtrar la tabla POItem. Utilice la fórmula DAX:
FilteredPOItem = FILTER( POItem, LOWER(POItem[Createdwhen]) = "po created yesterday" )Del mismo modo, cree otra tabla calculada denominada FilteredDemand para filtrar la tabla Demand. Usa la fórmula:
FilteredDemand = FILTER( Demand, LOWER(Demand[onhand>9 months]) = "more than 9 months onhand" )Después de filtrar las tablas individuales, cree una tabla calculada combinada que combine los datos filtrados de Cycle, FilteredPOItem y FilteredDemand. Utilice la fórmula DAX:
FilteredTable = SUMMARIZECOLUMNS( Cycle[Item#], Cycle[Order:Card Type], Cycle[PO#], Demand[onhand>9 months], POItem[Vendor name], FILTER( FilteredPOItem, FilteredPOItem[Item#] = Cycle[Item#] ), FILTER( FilteredDemand, FilteredDemand[Item Number] = Cycle[Item#] ) )Por último, agregue un objeto visual de tabla al informe e incluya las siguientes columnas: Ciclo[Artículo#], Ciclo[Pedido:Tipo de tarjeta], Ciclo[PO#], Demanda[disponible>9 meses] y POItem[Nombre del proveedor]. Esto garantiza que el informe filtre y muestre dinámicamente los datos que cumplen las condiciones especificadas. Asegúrese de que las relaciones del modelo estén configuradas correctamente para habilitar el filtrado y las referencias cruzadas entre las tablas. Avíseme si necesita más ayuda.
Saludos
- Syndicate_Admin
Administrator
No puedo crear relaciones para los enlaces a continuación ya que recibo un error
Específicamente, vincule Cycle[Item#] a POItem[Item#] -Error-"Ya hay una relación entre dos columnas"
Ciclo[Artículo#] a demanda[Número de artículo]. Error: "Ya existe una relación entre dos columnas"
- Syndicate_Admin
Administrator
¿Podría ayudarme con el código a continuación para nuestro escenario anterior para 3 tablas y puedo construir para 2 tablas, pero no estoy seguro de cómo refinar el código a continuación a nuestra lógica anterior?
Amable ayuda
Tabla =
SELECTCOLUMNS(
VALUES('Demand'[Número de artículo]), -- Asegurar solo números de artículo únicos
"Más de 9 meses en disponibilidad",
CALCULAR(MÁX.('Demanda'[Disponible>9 meses])),
"Más de 6 meses en disponibilidad",
CALCULAR(MAX('Demanda'[Disponible>6meses])),
"Número de artículo",
'Demanda' [número de artículo],
"CreatedWhen",
FIRSTNONBLANK(
'poitem'[CreatedWhen], -- Debería ser una sola columna
'poitem'[CreatedWhen] -- Estamos evaluando CreatedWhen para valores que no están en blanco
)
)
- Syndicate_Admin
Administrator
Hola @bzeeblitz ,
Para refinar el código para controlar el escenario de tres tablas y cumplir los requisitos, la lógica debe garantizar que los datos de las tres tablas se integren correctamente y, al mismo tiempo, mantener la claridad y la eficacia.
A continuación se muestra la fórmula DAX refinada para incluir lógica para tres tablas, suponiendo que la tercera tabla se denomina Orders con una columna relevante Orders[OrderDate] que debe incluirse en el cálculo:
Table = SELECTCOLUMNS( VALUES('Demand'[Item Number]), -- Ensure only unique Item Numbers "Greater than 9 Months On-Hand", CALCULATE( MAX('Demand'[Onhand>9months]) ), "Greater than 6 Months On-Hand", CALCULATE( MAX('Demand'[Onhand>6months]) ), "Item Number", 'Demand'[Item Number], "CreatedWhen", FIRSTNONBLANK( 'poitem'[CreatedWhen], -- Extract non-blank CreatedWhen 'poitem'[CreatedWhen] ), "Order Date", FIRSTNONBLANK( 'Orders'[OrderDate], -- Extract non-blank Order Date 'Orders'[OrderDate] ) )Para mejorar la integración de la tercera tabla, se ha incluido la tabla Orders, incorporando específicamente la columna Orders[OrderDate] para garantizar que sus datos relevantes formen parte del cálculo. Cada columna se ha revisado para mayor claridad, lo que garantiza nombres significativos y valores correspondientes. La lógica para manejar valores que no están en blanco se ha implementado mediante la función FIRSTNONBLANK para extraer el primer valor no en blanco disponible de la tabla Orders.
Es importante asegurarse de que las relaciones entre las tablas Demand, poitem y Orders estén correctamente definidas dentro del modelo de datos para facilitar cálculos precisos. Las columnas [Onhand>9months] y [Onhand>6months] ya deben existir en la tabla Demand para que esta fórmula funcione según lo previsto. Además, compruebe que los campos CreatedWhen y OrderDate se hayan rellenado y asignado correctamente a sus tablas respectivas.
Saludos