Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Hola
Me gustaría contar el recuento diferenciado de clientes donde la suma total de ventas es mayor que 0 en un intervalo de tiempo seleccionado (es posible que un importe de ventas para un pedido sea negativo, debido a una devolución). Aquí la estructura del conjunto de datos:
Fecha | ID de pedido | ID de cliente | Ventas |
01.01.2020 | 1 | A | 50o |
01.01.2020 | 2 | B | 60o |
02.01.2020 | 1 | A | -50o |
03.01.2020 | 3 | C | 100o |
04.01.2020 | 4 | A | 30o |
05.01.2020 | 5 | B | 10o |
Supongamos contar los clientes para el intervalo de tiempo entre 02.01.2020 - 04.01.2020 donde las ventas totales de los clientes son mayores que 0. La respuesta correcta sería:
Cliente A -50o +30o -20o -> no contar
Cliente C a 100o -> para contar
La medida debe calcular 1 como la respuesta correcta.
Ya tengo una medida que funciona correctamente, pero me enfrento al problema de que Power BI Service no puede calcular esa medida debido a la falta de disponibilidad de memoria:
"Ha alcanzado la asignación de memoria máxima permitida para su nivel. Considere la posibilidad de actualizar a un nivel con más memoria disponible."
Aquí la medida subyacente:
Measure =
COUNTROWS(
FILTER(
ADDCOLUMNS(
SUMMARIZE(
FACT_TABLE,
FACT_TABLE[CUSTOMER_ID]
)
,"SumSales",CALCULATE(SUM(FACT_TABLE[Sales]))
)
,[SumSales]>0
)
)
Entonces intenté usar una conexión directa para resolver este problema, pero luego tengo el siguiente mensaje de error:
¿Alguien tiene una idea de cómo cambiar la medida para que funcione correctamente?
Saludos
Hola amitchandak,
Tengo un desafío similar. Me gustaría saber cuántos clientes han tenido o superado los ingresos de 2500 € en los últimos 12 meses. He creado una medida para resumir primero los ingresos de los últimos 12 meses:
Otra opción similar a la de amitchandak es utilizar variables - A algunas personas les gusta ser muy procedurial por lo que esto funcionaría así
En la medida dax siguiente ha resumido la tabla para que sea una fila por cliente con sus ventas totales. En la segunda variable filtramos esa tabla a solo filas donde las ventas totales son mayores que 0
En la medición real contamos las filas en la segunda variable.
Si bien esto podría ser un enfoque torpe, si empiezas a construir medidas muy complejas, esto podría ayudarte a realizar un seguimiento de las cosas muy bien.
Number of Customer Greater Than 0 =
/*Create a summary table */
var Summary_Table = SUMMARIZE('Test Table', 'Test Table'[CustomerID], "Total Sales", SUM('Test Table'[Sales]))
var Summary_Table_GreaterThan0 = FILTER(Summary_Table, [Total Sales] > 0)
return
/*Count the number of rows in the table*/
CALCULATE(COUNTROWS(Summary_Table_GreaterThan0))
Hola @westwrightj ,
gracias por su respuesta. Estoy de acuerdo en que el uso de variables ayuda mucho a leer mejor las medidas y, en algunos casos, también puede mejorar el rendimiento. Pero en mi caso, no hay aumento de rendimiento mediante el uso de variables.
Saludos
Hola @Semih87 ,
Debe actualizar la capacidad compartida con capacidad premium para resolver este problema, ya que ha utilizado recursos que superan el límite superior o necesita optimizar el origen de datos subyacente para que la consulta devuelva menos datos.
Si este post ayuda, entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Saludos
Dedmon Dai
Tiene razón, el problema es que una de las funciones DAX utiliza demasiada capacidad de memoria. Al final, cambié los datos subyacentes para que el cálculo se pueda hacer de una manera eficiente.
@Semih87 , Trate así
Measure =
COUNTROWS(
FILTER(
SUMMARIZE(
FACT_TABLE,
FACT_TABLE[CUSTOMER_ID]
,"SumSales",CALCULATE(SUM(FACT_TABLE[Sales]))
)
,[SumSales]>0
)
)
es una consulta directa. Hay un límite en el límite de consultas de datos base.
Hola @amitchandak ,
gracias por su respuesta. Intenté su enfoque y obtener otro resultado (equivocado) - en realidad debería ser el mismo. Sin embargo, el uso de SUMMARIZE solo no se recomienda por motivos de rendimiento. Consulte la entrada del blog de @marcorussohttps://www.sqlbi.com/articles/best-practices-using-summarize-and-addcolumns/. Recomienda siempre favorecer la versión ADDCOLUMNS.
Saludos