Agrupar datos
Supongamos que una asignación debe agrupar nodos o filas. Esto se puede conseguir con ayuda de las siguientes funciones integradas de MapForce:
•group-by
•group-adjacent
•group-into-blocks
•group-starting-with
•group-ending-with
Para utilizar cualquiera de estas funciones en la asignación, arrástrelas desde la ventana Bibliotecas al área de la asignación. Consulte también Agregar una función integrada a una asignación de datos.
Nota: las funciones de agrupación están disponibles en estos lenguajes: XSLT 2.0, XSLT 3.0, C++, C#, Java y Built-In.
Las siguientes secciones ofrecen los típicos ejemplos de uso de las funciones de agrupación. Estos ejemplos están acompañados por la siguiente asignación de ejemplo: <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\GroupingFunctions.mfd. Observe que la asignación de ejemplo contiene varias transformaciones, una por cada función. Como solo se puede previsualizar un resultado cada vez, recuerde hacer clic en el botón Vista previa de la función que quiere comprobar antes de hacer clic en la pestaña Resultados.
group-by
La función group-by crea grupos de registros conforme a las claves de agrupación que se indiquen. Por ejemplo, en el siguiente ejemplo de transformación abstracta la clave de agrupación es "Departmento". Como hay un total de tres departamentos únicos, al aplicar la función group-by se crean tres grupos:
Para más información consulte la referencia a la función group-by.
group-adjacent
La función group-adjacent necesita una clave de agrupación como argumento, de forma parecida a como ocurre con la función group-by. Al contrario que esta, sin embargo, la función group-adjacent crea un grupo nuevo siempre que la clave es distinta. Si dos registros adyacentes tienen la misma clave los colocará en el mismo grupo.
Por ejemplo, en la imagen siguiente, que ilustra una transformación abstracta, la clave de agrupación es "Department". El lado izquierdo del diagrama muestra los datos de entrada, mientras que el lado derecho muestra los datos de salida tras la agrupación. Al ejecutar la transformación ocurre lo siguiente:
•Inicialmente, la primera clave, "Administración", crea un grupo nuevo.
•La siguiente clave es distinta, así que se crea un segundo grupo, "Publicidad".
•Como la tercera clave también es diferente, se crea otro grupo, "Ingeniería".
•La cuarta clave es la misma que la tercera, por lo que este registro se coloca en el grupo que ya existe para esa clave.
•Por último, la quinta clave es diferente de la cuarta, lo que hace que se cree un último grupo.
Como se ve en la siguiente imagen, "Michelle Butler" y "Fred Landis" están en el mismo grupo porque tienen la misma clave y son adyacentes. Sin embargo, "Vernon Callaby" y "Frank Further" están en grupos distintos porque no son adyacentes, aunque tengan la misma clave.
Para más información consulte la referencia a la función group-adjacent.
group-into-blocks
La función group-into-blocks crea grupos iguales que contienen exactamente N elementos, donde N es el valor que se le da al argumento block-size. Observe que el último grupo puede contener N elementos o menos en función de la cantidad de elementos de la fuente. En el ejemplo siguiente, block-size es 2. Como hay cinco elementos en total, cada grupo contiene exactamente dos elementos, excepto el último, que solo puede contener uno.
Para más información consulte la referencia a la función group-into-blocks.
group-starting-with
La función group-starting-with toma como argumento una condición booleana. Si se cumple la condición booleana se crea un grupo nuevo que empieza con el registro que cumple esa condición. En el siguiente ejemplo la condición es que la clave "Clave" debe ser "título". Esta condición se cumple en el caso de los registros primero y cuarto, así que se crean dos grupos:
Nota: si existen registros antes del primero que cumple la condición, se crea un grupo más. Por ejemplo, si hubiera más registros "línea" antes del último registro "título", estos se colocarían en ese grupo adicional.
Para más información consulte la referencia a la función group-starting-with.
group-ending-with
La función group-ending toma como argumento una condición booleana. Si la condición booleana se cumple, se crea un grupo nuevo en el que el último registro es el que cumple esa condición. En el siguiente ejemplo, la condición es que la clave sea "cola". Esta condición se cumple en los registros tercero y quinto, por lo que se crean dos grupos:
Nota: si existen registros después del último que cumple la condición, se crea un grupo más. Por ejemplo, si hubiera más registros "línea" después del último registro "cola", estos se colocarían en ese grupo adicional.
Para más información consulte la referencia a la función group-ending-with.