Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
Hola a todos,
No sé por qué, pero el foro decidió eliminar mi publicación, así que sólo estoy escribiendo de nuevo...
Estoy atascado con este problema desde hace un tiempo, he googleado y leído al menos 50 mensajes, pero no han encontrado ayuda hasta ahora. Espero que alguien tenga una idea aquí.
La pregunta que quiero responder es bastante simple. Cuántos envíos se necesitan para cumplir con un pedido.
El conjunto de datos con el que estoy trabajando contiene información sobre pedidos. Si usted pide un producto diferente al mismo tiempo, para cada uno de estos productos habrá un registro - una línea de pedido. Pero obtendrán la misma identificación de pedido. Ahora, debido a los niveles de stock y otras razones, no todas las líneas de pedido de un pedido se envían al mismo tiempo. Cada línea de pedido tiene un identificador de envío, que muestra en qué envío se envió el pedido.
Así que en una versión simplificada:
order_id | shipping_id |
1 | a |
1 | b |
1 | c |
2 | a |
2 | b |
3 | e |
3 | e |
3 | e |
3 | e |
El resultado debe ser así:
id de pedido | id de envío | ids de envío por id de pedido |
1 | a | 3 |
1 | b | 3 |
1 | c | 3 |
2 | a | 2 |
2 | b | 2 |
3 | e | 1 |
3 | e | 1 |
3 | e | 1 |
En primer lugar, intenté generar una tabla para cada fila que solo muestra los datos con el mismo identificador de orden exacto. Para comprobar, si mi fórmula es correcta, conté las filas y la controlé manualmente. Eso funcionó:
=COUNTX(FILTER('Outbound_3_ESC',EARLIER('Outbound_3_ESC'[order_id]) á 'Outbound_3_ESC'[order_id]),'Outbound_3_ESC'[order_id])
A continuación, intenté contar los valores distintos para el identificador de envío en esas tablas:
Solved! Go to Solution.
Hola @staryuz ,
Por favor, intente crear una columna calculada como se muestra a continuación para reemplazar esa medida y comprobar si eso es lo que desea:
Column = CALCULATE (
DISTINCTCOUNT ( 'Outbound_3_ESC'[shipment_id] ),
FILTER (
ALLSELECTED( 'Outbound_3_ESC' ),
'Outbound_3_ESC'[order_id] = EARLIER( 'Outbound_3_ESC'[order_id] )
)
)
Saludos
Rena
@staryuz , Intentar como nueva columna
calculate(distinctcount(Table[shipment id]), filter(Table, [order id] á earlier([order id])))
Hola amitchandak,
gracias por su respuesta. Esto genera todavía el mismo resultado que los 2 enfoques anteriores. Todavía veo 56 en lugar de 4.
Saludos
Jakob
Hola @staryuz ,
Por favor, intente crear medidas como se muestra a continuación para reemplazar la columna calculada original:
Measure =
CALCULATE (
DISTINCTCOUNT ( 'Outbound_3_ESC'[shipment_id] ),
FILTER (
ALLSELECTED ( 'Outbound_3_ESC' ),
'Outbound_3_ESC'[order_id] = MAX ( 'Outbound_3_ESC'[order_id] )
)
)
Measure 2 = SUMX(VALUES('Outbound_3_ESC'[order_id]),[Measure])
Saludos
Rena
Hola Rena,
gracias por su ayuda. ¡Eso funcionó!
Quiero mostrar el promedio de la relación. ¿Cómo podría poner eso en una imagen?
¿Entiendo bien su fórmula - ¿Puedo simplemente cambiar el SUMX a AVERAGEX para obtener los promedios en el objeto visual?
AVERAGEX(VALUES('Outbound_3_ESC'[order_id]),[Measure])
Hola @staryuz ,
Si la siguiente tabla es lo que desea? Si no, proporcione más detalles y ejemplos sobre su resultado esperado.
Saludos
Rena
Hola Rena,
La idea es mostrar el número medio de envíos por identificador de pedido en un gráfico de columnas. Algo como esto:
Si introduzlo la medida como valor para el gráfico de columnas, muestra la suma de todas las medidas separadas en años. Así que obtengo el número total y no el promedio en la visualización.
Gracias y saludos
Jakob
Hola @staryuz ,
Lamento no tener claro su requisito. ¿Podría proporcionar el número promedio correcto de envíos por ID de pedido en forma de tabla como la de su publicación original? Como se ha comprobado el gráfico de columnas, el campo de fecha se mostrará como campos de eje. Entonces, ¿de dónde es este campo de fecha? ¿Es de la misma tabla con el campo de identificación de pedido?
El resultado debe ser así:
id de pedido id de envío ids de envío por id de pedido 1 a 3 1 b 3 1 c 3 2 a 2 2 b 2 3 e 1 3 e 1 3 e 1
Saludos
Rena
Hola @yingyinr ,
El gráfico de columnas solo se usó para dar una idea de cómo debería ser la visualización al final.
El cálculo de la medida funciona perfectamente. Sin embargo, tengo problemas para incorporarlo a una visualización.
Para una columna calculada y simplemente puedo elegir mostrar como promedio. Sin embargo, esto no es posible para una medida.
Básicamente, en la visualización, los identificadores de envío por identificador de pedido deben mostrarse como un promedio general en un gráfico de columnas. Para los números aquí el promedio es 2. A continuación, debe representarse mediante una columna con el valor 2.
El conjunto de datos original contiene más información sobre el año y las categorías. Estoy planeando utilizar el año como eje para comparar cómo se desarrolló con el tiempo.
Gracias de nuevo por su ayuda.
Saludos
staryuz
Hola @staryuz ,
Por favor, intente crear una columna calculada como se muestra a continuación para reemplazar esa medida y comprobar si eso es lo que desea:
Column = CALCULATE (
DISTINCTCOUNT ( 'Outbound_3_ESC'[shipment_id] ),
FILTER (
ALLSELECTED( 'Outbound_3_ESC' ),
'Outbound_3_ESC'[order_id] = EARLIER( 'Outbound_3_ESC'[order_id] )
)
)
Saludos
Rena
Hey @yingyinr ,
esto es exactamente lo que quería. ¡Gran! Muchas gracias.
No entiendo exactamente por qué los otros cálculos llegaron a resultados falsos. Sin embargo, con esta fórmula todo es correcto y puedo usarlo según lo planeado en los gráficos.
Gracias por su ayuda y paciencia!
Saludos
staryuz
Hola @staryuz ,
¿Has probado esto:
Id. de envío por identificador de pedido: CALCULATE(DISTINCTCOUNT('Table'[shipping_id]), ALLEXCEPT('Table','Table'[order_id ]))
Hola camargos88,
gracias por la respuesta rápida.
El resultado es el mismo que con mi enfoque - la columna calculada muestra números incorrectos.
Por ejemplo, hay un pedido con 130 líneas de pedido, pero solo se utilizan 4 identificadores de envío en estas líneas de pedido. Sin embargo, la tuya y mi fórmula muestran 59.