1. Faro

Nivel 3 · Rangos de cantidad con SWITCH(TRUE())

La solicitud

De Nicole Adams, Gerente de Logística

“Las líneas con muchas unidades van en un palé, las pequeñas van en una caja. ¿Puedes clasificar cada línea de pedido: menos de 3 unidades es Small, de 3 a 5 es Medium, más de 5 es Large? Y algunas líneas tienen cantidades de 0 o negativas, que son errores de datos. Ponlas en su propio rango Check para que se las pase a TI.”

Tu objetivo

Añade a order_items una columna calculada llamada Quantity Band: "Check" cuando quantity sea 0 o menos, "Small" cuando sea menor que 3, "Medium" de 3 a 5 y "Large" por encima de 5. La matriz agrupa las medidas dadas Order Lines y Units por tu columna.

  • Agrega la columna Quantity Band a order_itemspendiente
  • También la fila Total correctapendiente

Tu columna calculada

DAX
Visual
A matrix: rows = your new column on order_items, values = [Order Lines], [Units]
Medidas del informe
Order Lines = COUNTROWS(order_items)Units = SUM(order_items[quantity])
Panel de datos: tablas y columnas
  • order_items order_item_id, order_id, product_id, quantity, unit_price, discount_pct, line_total
  • orders order_id, customer_id, order_date, status, channel, shipping_fee, coupon_code
  • products product_id, name, category, subcategory, unit_price, unit_cost, launched_on, is_active
  • customers customer_id, first_name, last_name, email, city, state, signup_date, segment, referral_source
  • returns return_id, order_item_id, returned_on, reason, refund_amount
  • Date Date, Year, Quarter, Month Number, Month, Year Month, Year Quarter, Day, Weekday Number, Weekday

Cargando el editor…

    VisualData view of order_items: your column appears in the visual once you press Check
    El visual antes de tu respuesta
    order_item_idorder_idproduct_idquantityunit_pricediscount_pct
    11,001121931.990
    21,001154311.990
    31,002154411.990
    41,00219411490
    51,002193219.990
    61,002196225.990
    71,002156153.990
    81,003134192.9910

    Mote revisa tu resultado

    Presiona Comprobar. Mote completa tu respuesta y la compara con lo que necesita el informe.

    La lección

    Dos rangos necesitan un IF. Cuatro rangos necesitan o tres IF anidados uno dentro de otro, o un SWITCH que se lee como una lista. Ambos funcionan; la lista es más fácil de leer y de cambiar.

    En qué estás trabajando

    Esto es un informe de práctica creado para este sitio; Power BI Desktop solo funciona en Windows. Tu columna se añade a order_items, y la matriz agrupa Order Lines (COUNTROWS(order_items)) y Units (SUM(order_items[quantity])) por ella.

    En Power BI Desktop: selecciona order_items en el panel Data, Table tools → New column, escribe la fórmula (Shift+Enter empieza una línea nueva en la barra de fórmulas) y pulsa Enter.

    IF anidado

    Quantity Band =
    IF(order_items[quantity] <= 0, "Check",
        IF(order_items[quantity] < 3, "Small",
            IF(order_items[quantity] <= 5, "Medium", "Large")))

    Cada IF maneja una prueba y pasa el resto al siguiente. Funciona, pero en el cuarto rango los paréntesis son difíciles de contar.

    SWITCH(TRUE(), …)

    SWITCH compara un valor con una lista de casos. Dale TRUE() como valor, y cada caso se convierte en una prueba: gana la primera prueba que sea igual a TRUE.

    Quantity Band =
    SWITCH(
        TRUE(),
        order_items[quantity] <= 0, "Check",
        order_items[quantity] < 3,  "Small",
        order_items[quantity] <= 5, "Medium",
        "Large"
    )

    El último argumento, sin prueba, es el valor predeterminado: lo que no pasó ninguna prueba. Aquí es toda cantidad por encima de 5.

    El orden es la lógica

    Como gana la primera prueba TRUE, cada prueba solo ve las filas que las anteriores dejaron pasar. La prueba < 3 no necesita decir «y por encima de 0», porque las filas con 0 o menos ya tienen su etiqueta. Pon las pruebas en el orden equivocado y los rangos cambian en silencio: prueba < 3 primero y toda cantidad negativa pasa a ser Small.

    Lee también con cuidado los límites del ticket. «De 3 a 5 es Medium» incluye tanto 3 como 5, así que la prueba es <= 5, y «más de 5» es el valor predeterminado.

    Las filas defectuosas merecen su propio rango

    Las líneas de pedido de Harbor & Pine incluyen un puñado de cantidades de 0 o menos, dejadas por una importación defectuosa. Un rango Check las mantiene visibles en lugar de dejar que se escondan dentro de Small, para que alguien las arregle en el origen. Fíjate en que el total de Units de la matriz las incluye, negativos y todo.

    Errores comunes

    • La prueba de filas defectuosas al final. Demasiado tarde: Small ya se ha llevado esas filas.
    • < 5 para «de 3 a 5». Las líneas de exactamente 5 unidades pasarían a ser Large. (Aquí ninguna línea tiene 5, pero la próxima importación podría.)
    • Sin valor predeterminado. Sin un valor final, las filas que no pasan ninguna prueba reciben un rango en blanco.

    Elige qué puede ejecutarse en este sitio. Puedes cambiarlo cuando quieras desde "Configurar cookies", al pie de cada página.