Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers. Get Fabric certified for FREE! Learn more
Hola a todos
Preparé un ejemplo de datos para mi caso para explicarlo con la mayor precisión posible.
En mi caso están disponibles los siguientes datos:
- DataTime es una columna con la fecha y hora de la medición sin conexión después del fin de la vida útil. Durante una medición se miden varias características de medición, pero todas ellas siempre se asignan a la misma fecha/hora. Los productos no se miden en orden de producción en el fin de la vida.
- SerialNumber es una columna con un número de serie único de cada producto. Es una combinación de la fecha (primeros 6 dígitos) y el pedido en EOL (últimos seis dígitos) durante este día, por lo que en función de este número se puede reconocer qué producto se ha producido antes y/o después. Un producto se puede medir una o varias veces (asignado a muchos valores de DataTime)
- Entidad es una columna con el nombre de la entidad medida durante la medición.
Como observación, puedo agregar que inicialmente en los datos sin procesar de los equipos de medición, la columna DataTime es única, pero después de anular la dinamización de todas las columnas de características se duplica en muchas filas.
La tabla de ejemplo de entrada está disponible en el siguiente enlace: https://drive.google.com/file/d/1oyfUhBwf_hNNmqqEDe0tHTSg72LCWLRM/view?usp=drive_link
En este momento, necesito agregar un número de fila MeasurementID como columna a la tabla en las siguientes condiciones:
- el mismo número de fila debe asignarse al mismo valor de DataTime
- El número de fila debe ordenarse por número de serie ascendente
- en caso de que se vuelva a medir SerialNumber, asignado a otro valor de DataTime, el número de fila debe ordenarse por DataTime ascendente.
A continuación se muestra el resultado de ejemplo esperado:
Los datos de ejemplo con la salida esperada con la columna MeasurementID agregada de acuerdo con las condiciones descritas están disponibles en el siguiente vínculo: https://drive.google.com/file/d/1WgyPQV-U6Iwuj6mDEQisgPzIj1mukPN-/view?usp=drive_link
Necesito el MeasurementID como base para múltiples visualizaciones en muchas páginas, por lo que creo que el método más apropiado para calcularlo en Power BI es una columna calculada o en Power Query. La medida no es suficiente, porque hasta donde yo sé, la posibilidad de filtro estará limitada/deshabilitada para muchas visualizaciones a la vez.
Desafortunadamente, no sé cómo escribir un elogio DAX correcto para devolver el MeasurementID como espero. Así que le pido amablemente que me ayude a encontrar una solución para mi problema.
Si esto es útil a continuación, envío el elogio SQL que devuelve el MeasurementID de acuerdo con las condiciones mencionadas anteriormente (la salida de datos de muestra se calcula en función del código a continuación). Pero, por desgracia, no sé cuál será el equivalente en el DAX.
WITH
cte1 AS (
SELECT DISTINCT DataTime,
SerialNumber
FROM ALL_Table_unpivot),
cte2 AS (
SELECT DataTime,
SerialNumber,
ROW_NUMBER() OVER(ORDER BY SerialNumber ASC, DataTime ASC) AS MeasurementID
FROM cte1)
SELECT atu.DataTime,
atu.SerialNumber,
atu.Feature,
cte2.MeasurementID
FROM ALL_Table_unpivot AS atu
LEFT JOIN cte2 ON atu.DataTime = cte2.DataTime
ORDER BY SerialNumber;
Si también considera que una solución diferente, no a través de DAX, es mejor aplicable como solución a este problema, me gustaría escuchar su propuesta también.
Agradezco a todos por su ayuda en este tema.
Hola @gmsamborn
¡Gracias por la solución!
Lo comprobé y, por supuesto, funciona perfectamente como lo describiste con mis datos de muestra.
También comprobé si cambio el archivo de origen (agrego nuevas filas con los resultados de la medición) y lo actualizo para volver a calcularlo y todavía se ve bien.
¡Gracias de nuevo!
Lo hice en Power Query con los siguientes pasos:
- copiar 'ALL_Table_unpivot' a 'ALL_Table_unpivot-index'
- en 'ALL_Table_unpivot-index', elimine las columnas además de [DataTime] y [SerialNumber]
- Eliminar duplicados
- Ordenar por las 2 columnas
- ordenar por [SerialNumber]
- mientras [SerialNumber] está seleccionado, seleccione [DataTime] mientras presiona CTRL
- mientras sigue presionando CTRL, ordene [DataTime]
- Agregar un índice (a partir de 1)
- Empezando por 'All_Table_unpivot', fusiona 'All_Table_unpivot-index'
- expanda la tabla ALL-Table_unpivot-index y extraiga [MeasurementID]
Espero que esto tenga sentido.
(Agregué una fila adicional para SerialNumber '20231003000134' con una fecha diferente para fines de prueba).
Check out the April 2025 Power BI update to learn about new features.
Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.