Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
1 year ago

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 tarjetaDESPUÉS#
1-VERTICALTarjeta21390
1-VERTICALtarjeta21390
1-VERTICALtarjeta21390
567890Sin tarjeta21391
567890sin tarjeta21391
567891tarjeta21392

Nombre de la tabla : POItem; Nota:Varias veces Artículo# encontrado
Artículo#CreatedwhenNombre del proveedor
36 en posición verticalPO no creado ayerBien hecho
36 en posición verticalPO no creado ayerBien hecho
36 en posición verticalpO creado ayerBien hecho
38 en posición verticalPO no creado ayerproveedor1

Nombre de la tabla:Demanda ; Nota: No hay número de artículo duplicado
Número de artículoDisponible>9 mesesA mano>6 meses
P123-AB-GG-AA-USMenos de 9 meses disponiblesMenos de 6 meses disponibles
P123-AB-T-Z-USmás de 9 meses en disponibilidadmásMás de 6 meses en disponibilidad
P123-E-BB-Z-USMenos de 9 meses disponiblesMenos de 6 meses disponibles
215B14567más de 9 meses en disponibilidadmás de 6 meses en disponibilidad

5 Replies

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

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

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

        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