1. Faro

Nivel 4 · Cuenta clientes con DISTINCTCOUNT

La solicitud

De Andrew Hughes, Analista de Insights de Clientes

“Para la revisión de canales ya tengo los pedidos completados por canal. Lo que me falta es cuántos clientes distintos compraron por cada uno: web, app y marketplace. Un cliente con diez pedidos cuenta una vez.”

Tu objetivo

La página está filtrada a pedidos completados y la matriz tiene orders[channel] en las filas, junto a la medida dada Orders. Crea una medida llamada Customers que cuente los clientes distintos que hicieron esos pedidos.

  • Llena [Customers] en cada fila del visualpendiente
  • También la fila Total correctapendiente

Tu medida

DAX
Visual
A matrix: rows = orders[channel]; values = [Orders], [Customers]
Segmentaciones
orders[status] = completed
Medidas del informe
Orders = COUNTROWS(orders)
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…

    Visual[Customers] fills in when you press Check
    El visual antes de tu respuesta
    channelOrdersCustomers
    app3,885
    marketplace1,597
    web5,367
    Total10,849

    Mote revisa tu resultado

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

    La lección

    «¿Cuántos pedidos?» y «¿cuántos clientes?» suenan parecido y tienen respuestas distintas. La primera cuenta filas; la segunda cuenta las personas distintas detrás de esas filas.

    En qué estás trabajando

    Esto es un informe de práctica creado para este sitio; Power BI Desktop solo funciona en Windows. La matriz tiene orders[channel] en las filas y un filtro de página que conserva solo los pedidos completados. Tú escribes la medida, y el motor la evalúa en cada celda, Total incluido.

    En Power BI Desktop: selecciona la tabla orders en el panel Data, luego Home → New measure (o Table tools → New measure). Escribe la fórmula, pulsa Enter y arrastra la medida al campo Values de la matriz. El filtro de solo completados estaría en el panel Filters, en Filters on this page.

    Cuatro formas de contar

    Función Cuenta Ejemplo
    COUNTROWS(table) filas de una tabla COUNTROWS(orders): pedidos
    COUNT(column) valores no vacíos de una columna COUNT(orders[customer_id]): pedidos que tienen cliente
    COUNTA(column) valores no vacíos de cualquier tipo también columnas de texto
    DISTINCTCOUNT(column) valores distintos de una columna DISTINCTCOUNT(orders[customer_id]): clientes

    COUNTROWS es la forma habitual de contar filas; dice lo que quieres decir y no depende de que ninguna columna esté rellena. DISTINCTCOUNT es la de «cuántos distintos…»: clientes, productos, días con ventas.

    Customers = DISTINCTCOUNT(orders[customer_id])

    Por qué el Total es menor que las filas

    Suma las tres filas de canal y obtienes más que el Total. No es un error. Un cliente que compró en la web y en la app es uno de los clientes de la web y uno de los clientes de la app, pero solo un cliente en el Total, que se evalúa una vez sobre todos los pedidos completados. Las sumas cuadran entre filas; los conteos distintos no.

    Contar clientes, no pedidos

    ¿Por qué no contar la tabla customers? COUNTROWS(customers) contaría a todos los clientes, compradores o no, porque los filtros sobre orders no fluyen de vuelta a customers (la relación es de dirección única, de customers a orders). Los ID de cliente en orders son exactamente las personas que hicieron los pedidos filtrados, así que esa es la columna que hay que contar.

    Errores comunes

    • COUNT en lugar de DISTINCTCOUNT. Cuenta uno por pedido: otra vez la columna Orders.
    • COUNTROWS(customers). El mismo número en cada canal: todos los clientes.
    • Sumar las filas para comprobar el Total. Para conteos distintos el Total es correcto tal como está.

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