cinco uno
Al cargar los datos, necesito mantener solo el último registro.
No tengo una fecha en la que confiar para determinar el último registro, pero tengo un estado, en función del cual puedo ordenar en un orden cronológico.
Pensé que podía
- Asocie un ID de estado a cada estado, asegurándose de que el ID más bajo sea el más reciente del evento
- Ordenar por statusID
- Eliminar duplicados
Desafortunadamente, parece que el orden de clasificación no siempre se respeta,
Leí que deberíamos usar la función Table.Buffer () antes de eliminar los duplicados, pero que esto podría crear un problema de rendimiento.
De hecho, crea problemas de rendimiento. Funciona a pequeña escala, pero cuando utilizo esto en todo el conjunto de datos, el proceso de carga no se completa.
Ahora estoy buscando usar Table.SelectRows con una condición que solo devolvería la fila con el statusID más pequeño para cada RequestID.
Algo en la línea de
#"Latest Request" = Table.SelectRows(#"Previous Step", each (List.Max([RequestID]," statusID "))),
Pero eso devuelve un error de incompatibilidad de tipos.
RachelL
También tuvimos un problema similar. Encontramos que esto resolvió nuestro problema:
1. Ordene los datos según sea necesario
2. Agregue una columna de índice que comience en 1
3. Eliminar duplicados
La columna de índice ayuda a Power BI a darse cuenta, mientras elimina los duplicados, de que existe un orden específico para los datos ordenados.
acstaffa
Ya he subido datos SQL, ¿cómo puedo crear una función para ordenar el orden de las columnas y forzar la eliminación para seguir el orden de la fecha? No sé cómo crear la función …
Es triste que PBI no «siga» el orden de clasificación para eliminar duplicados …
MarcelBeug
Mi sugerencia sería la siguiente, ilustrada por este video.
Creé algunos datos de prueba en Access solo para verificar si el código permitiría el plegado de consultas (haciendo clic con el botón derecho en cada paso de las consultas y verificando la existencia de Native Query). Todos lo hicieron, por lo que el rendimiento debería estar bien.
Creé una consulta Los datos de entrada que solo lee los datos de Access. Para esta consulta, la carga está deshabilitada.
let Source = Access.Database(File.Contents("C:UsersMarcelDocumentsForum bijdragenPower BI CommunityHow to remove duplicates based on sort order.accdb"), [CreateNavigationProperties=true]), _Requests = Source{[Schema="",Item="Requests"]}[Data] in _Requests
Creé una consulta MinStatusByRequestID con la entrada de la consulta InputData que determina el statusID mínimo para cada RequestID usando Agrupar por en la pestaña Transformar. También para esta consulta, la carga está deshabilitada.
let Source = InputData, #"Grouped Rows" = Table.Group(Source, {"RequestID"}, {{"minStatus", each List.Min([statusID]), type number}}) in #"Grouped Rows"
Creé una consulta FilteredData que fusiona las 2 consultas anteriores con una combinación interna. Para esta consulta, la carga está habilitada.
let Source = InputData, #"Merged Queries" = Table.Join(Source,{"RequestID", "statusID"},MinStatusByRequestID,{"RequestID", "minStatus"},JoinKind.Inner), #"Removed Columns" = Table.RemoveColumns(#"Merged Queries",{"minStatus"}) in #"Removed Columns"
viento de jade
En respuesta a MarcelBeug
¡Muchas gracias Marcel! ¡He estado luchando durante días y buscando una solución loca en Google y acabas de resolver mi problema!
osinquinvdm
En respuesta a MarcelBeug
¡Vaya, gracias Marcel por tomarse el tiempo para brindar esa explicación detallada e incluso hacer un video!
Aprovechar la agrupación y la fusión es genial.