Foro Empleos Academia Blog
Recursos
  • Ejemplos de dashboards
  • DatData Games
  • Alumnos destacados
  • Torneos pasados
Search Icon Iniciar sesión Inscribirme
Back arrow

Power Query

hace 2 semanas

Relleno consecutivo

OctavioSomonte850

Buenas tardes, una consulta...

Tengo una consulta en mi modelo de datos en la que cada registro se le llama "Subposición".
Esta subposición hace referencia a cada entrega de mercadería de una "Posición" de una "Orden de compra", la "Posición" vendría a hacer referencia a cada item dentro de la orden de compra.
Por lo tanto cada subposición tendra asociada una posición de una orden de compra, este valor se ve en la tabla en una concatenación llamada OC-Pos.

Por ejemplo:
Orden de compra: 4500100000
Posición: 10
OC-Pos: 4500100000-10

Y cada entrada de mercadería será 1, 2, 3...

La subposicion la tengo que calcular yo en power query, actualmente logre tener una columna llamada "Subpos inicial", que muestra 1 cuando aparece por primera vez una OC-Pos, para las demas subposiciones aparece null

Por ejemplo: Si en OC-Pos tengo los siguientes valores: 4500100000-10; 4500100000-10; 4500100000-20; 4500100000-30; 4500100000-30; 4500100000-30

La columna Subpos inicial me devuelve: 1; null; 1; 1; null; null

Pero quiero agregar otra columna para que me devuelva las subposiciones correctas.
En el caso del ejemplo sería; 1; 2; 1; 1; 2; 3

Es decir, para la misma OC-Pos me debe devolver un consecutivo de 1 en 1 comenzando en 1

¿Cómo podría resolverlo?
0 Votos
2
Respuestas
Respuestas

AsistenteVirtualDatdata

hace 2 semanas

🤖 Esta respuesta fue generada automáticamente por nuestra inteligencia artificial local. Es un intento único de ayudarte al instante. No responderá a mensajes posteriores en este hilo.

Hola, ¡gracias por tu consulta!

Entiendo perfectamente lo que necesitas hacer en Power Query: calcular un número secuencial (Subposición) para cada entrega de mercadería (Subposición) dentro de cada ítem de una Orden de Compra (identificado por OC-Pos).

La forma de resolver esto en Power Query es agrupar las filas por la columna "OC-Pos" y, dentro de cada grupo, añadir una columna de índice que comience en 1.

Aquí te muestro el código M que podrías usar. Deberás adaptarlo a los nombres exactos de tus columnas y al paso anterior en tu consulta:

let
    Source = tu_paso_anterior_de_carga_o_transformacion,
    // Ejemplo: Source = Excel.CurrentWorkbook(){[Name="Tabla1"]}[Content];
    // Ejemplo: Source = #"Tipo Cambiado";
    
    // Agrupar por la columna 'OC-Pos'
    #"Agrupar por OC-Pos" = Table.Group(Source, {"OC-Pos"}, {{"DatosAgrupados", each Table.AddIndexColumn(_, "Subposicion Correcta", 1, 1)}}),
    
    // Expandir la columna agrupada para obtener todas las filas originales
    // incluyendo la nueva columna 'Subposicion Correcta'.
    // ¡IMPORTANTE! Debes listar aquí TODAS las columnas originales de tu tabla
    // EXCEPTUANDO la columna "OC-Pos", Y agregar "Subposicion Correcta".
    // Por ejemplo, si tus columnas originales eran "OC-Pos", "Fecha", "Cantidad", "Proveedor":
    // #"Expandir Datos Agrupados" = Table.ExpandTableColumn(#"Agrupar por OC-Pos", "DatosAgrupados", {"Fecha", "Cantidad", "Proveedor", "Subposicion Correcta"})
    #"Expandir Datos Agrupados" = Table.ExpandTableColumn(#"Agrupar por OC-Pos", "DatosAgrupados", {"Columna1Original", "Columna2Original", "...", "Subposicion Correcta"}),

    // Opcional: Reordenar las columnas si deseas que "Subposicion Correcta" aparezca en un lugar específico
    // #"Columnas Reordenadas" = Table.ReorderColumns(#"Expandir Datos Agrupados",{"OC-Pos", "Columna1Original", "Subposicion Correcta", ...})
    
    ResultadoFinal = #"Expandir Datos Agrupados"
in
    ResultadoFinal

Explicación:

  1. La variable Source debe contener el paso anterior de tu consulta, que es la tabla con la columna "OC-Pos".
  2. Table.Group agrupa las filas basándose en los valores únicos de "OC-Pos". Para cada grupo, crea una nueva columna llamada "DatosAgrupados".
  3. Dentro de cada grupo (each _), Table.AddIndexColumn añade una columna llamada "Subposicion Correcta" que asigna un número secuencial (empezando en 1 e incrementando de 1 en 1) a las filas dentro de ESE grupo específico.
  4. Table.ExpandTableColumn toma la tabla resultante del agrupamiento (que tiene la columna "OC-Pos" y la columna "DatosAgrupados" con las tablas anidadas) y expande las tablas anidadas. Al expandir, debes especificar qué columnas de la tabla anidada quieres mantener. Aquí es crucial que listes TODAS tus columnas originales (excepto "OC-Pos", ya que esa ya está fuera de la tabla anidada en este punto) y, muy importante, incluyas la nueva columna "Subposicion Correcta".
  5. Finalmente, el resultado es la tabla original con la nueva columna "Subposicion Correcta" que contiene el consecutivo deseado para cada grupo de "OC-Pos".

Asegúrate de ajustar la lista de columnas en el paso #"Expandir Datos Agrupados" para que coincida exactamente con las columnas de tu tabla, excluyendo "OC-Pos".

Te sugiero visitar:

https://www.datdata.com/cursos

- Asistente Virtual de Datdata

1 Votos

OctavioSomonte850

hace 2 semanas

Muchas gracias! Solucionado
0 Votos
Es necesario estar inscrito para dejar tu duda, comentario y/o respuesta

Sobre el alumno

OctavioSomonte850

Octavio Somonte

Cursos completados

Imagen del curso Aprende Power BI con proyectos sencillos
Imagen del curso Domina Power BI con proyectos intermedios
Imagen del curso Certificación oficial por Microsoft de Power BI
Imagen del curso Especialización en Transformación de Datos con Power Query

Más preguntas sobre el tema

Medida

LucasGP

Columna personalizada

OctavioSomonte850

Combinación de consultas

OctavioSomonte850

Manejo de datos con Power query + Data entry manual

OctavioSomonte850

donde descargr las fuentes de datos de las grabaciones de las clases en vivo

victoralfonso101

Recursos
  • Foro
  • Inscribirse
  • Blog
  • Ejemplos de dashboards
Cursos
  • Aprende Power BI con Proyectos
  • Análisis de Datos con Power BI y Excel
  • Especialización en Power Query
  • Certificación de Power BI
  • Tu Portafolio de Dashboards
Legales
  • Términos del servicio
  • Política de privacidad
  • Política de cookies
  • Contacto
  • Acerca
Canal de YouTube de datdata Cuenta de Linkedin de datdata Cuenta de Instagram de datdata Página de Facebook de datdata Cuenta de TikTok de datdata
© 2025 © datdata - Todos los derechos reservados