Saltar al contenido principal

Concatenación

La concatenación es una operación que toma dos tablas y las combina en una sola.

Las dos tablas se agregan, apilando una sobre la otra, con una columna para cada nombre de columna distinto. Los datos no cambian y la tabla resultante contiene el mismo número de registros que las dos tablas originales juntas. Se pueden ejecutar secuencialmente varias operaciones de concatenación y la tabla resultante será la concatenación de más de dos tablas.

Concatenación automática

Si los nombres de los campos y el número de campos de dos o varias tablas cargadas son exactamente iguales, Qlik Sense concatenará automáticamente el contenido de las diferentes sentencias en una tabla.

El número y los nombres de los campos deben ser exactamente iguales para que se produzca la concatenación automática. El orden de las dos sentencias LOAD es arbitrario, pero a la tabla se le dará el nombre de la tabla que se carga primero.

  1. Abra el Editor de carga de datos en la app Scripting Tutorial.
  2. Haga clic en la pestaña Dates.
  3. Haga clic en Cargar datos.
  4. Según el script de carga que ha escrito hasta ahora, Qlik Sense carga 628 líneas desde el archivo de datos Dates.xlsx a Table2.

    Ventana de progreso de la carga de datos

    Ventana de progreso de la carga de datos
  5. En una nueva línea del script en la sección Dates, copie y pegue la sentencia LOAD para Table2. Esto hará que los datos se carguen dos veces. Dé nombre a la segunda tabla Table2a.
  6. También puede eliminar el script existente y copiar y pegar lo siguiente:

    Table2:
    LOAD
        "Date",
        Month (Date) as "Month",
        Quarter,
        "Week",
        "Year"
    FROM [lib://DataFiles/Dates.xlsx]
    (ooxml, embedded labels, table is Dates);
    
    Table2a:
    LOAD
        "Date",
        Month (Date) as "Month",
        Quarter,
        "Week",
        "Year"
    FROM [lib://DataFiles/Dates.xlsx]
    (ooxml, embedded labels, table is Dates);

    Su script debería tener el aspecto siguiente:

    Script de carga en la pestaña Dates

    Script de carga en la pestaña Dates.
  7. Haga clic en Cargar datos.
  8. Qlik Sense no carga Table2 y después Table2a. En su lugar, reconoce que Table2a tiene los mismos nombres de campo y número de campos que Table2. Luego agrega los datos de Table2a a Table2, y elimina la tabla Table2a. El resultado es que Table2 ahora tiene 1.256 líneas.

    Concatenación en la ventana de progreso de carga de datos

    Concatenación en la ventana de progreso de carga de datos.
  9. Abra el Visor del modelo de datos.
  10. Haga clic en Mostrar vista previa.
  11. Solo se ha creado Table2. Seleccione Table2. La tabla tiene 256 filas.

    Visor del modelo de datos que muestra Table2

    Visor del modelo de datos que muestra Table2.

Concatenación forzada

También se puede hacer que Qlik Sense obligue a concatenar dos o más tablas aunque dichas tablas no tengan exactamente el mismo conjunto de campos. Esto se hace mediante la inclusión del prefijo Concatenate en el script, el cual concatena una tabla con otra tabla designada o con la tabla creada más recientemente.

  1. Edite la sentencia LOAD para Table2a, añadiendo Concatenate y eliminando el comentario de Week.
  2. Su script ahora debería presentar el siguiente aspecto:

    Table2a:
    Concatenate LOAD
        "Date",
        Month (Date) as "Month",
        Quarter,
        // "Week",
        "Year"
    FROM [lib://DataFiles/Dates.xlsx]
    (ooxml, embedded labels, table is Dates);

    Eliminando el comentario de Week, nos aseguraremos de que las tablas no sean idénticas.

  3. Haga clic en Cargar datos.
  4. Abra el Visor del modelo de datos.
  5. Ahora puede ver que Table2a no se ha creado.

  6. Haga clic en Table2 en el visor del modelo de datos, y después haga clic en Vista previa.
  7. La tabla contiene los campos Date, Month, Quarter, Week y Year. El campo Week todavía se muestra, porque se cargó desde Table2.

  8. Haga clic en Week en Table2. La vista previa muestra que el número de valores no nulos para el campo es 628. Sin embargo, si hace clic en cualquiera de los otros campos, verá que el número de valores no nulos es 1256. Week se cargó solo una vez, desde Table2. El número de valores, o registros, es la suma del número de registros en Table2 y Table2a.

Cómo evitar la concatenación

Si los nombres de los campos y el número de campos de dos o varias tablas cargadas son exactamente iguales, Qlik Sense concatenará automáticamente el contenido de las diferentes sentencias en una tabla. Esto se puede evitar con una sentencia NoConcatenate. La tabla cargada mediante la sentencia LOAD o SELECT asociada no se concatenará entonces con la tabla previa.

  1. Para poder separar completamente el contenido de las dos tablas, agregue NoConcatenate a la sentencia LOAD en Table2a y cambie el nombre de los campos para que Qlik Sense no cree una clave sintética basada en los campos coincidentes. Elimine el comentario Week en Table2 de modo que las dos tablas tengan los mismos campos.
  2. Su script ahora debería presentar el siguiente aspecto:

    Table2:
    LOAD
        "Date",
        Month (Date) as "Month",
        Quarter,
        "Week",
        "Year"
    FROM [lib://DataFiles/Dates.xlsx]
    (ooxml, embedded labels, table is Dates);
    
    Table2a:
    NoConcatenate LOAD
        "Date" as "Date2",
        Month (Date) as "Month2",
        Quarter as "Quarter2",
        "Week" as "Week2",
        "Year" as "Year2"
    FROM [lib://DataFiles/Dates.xlsx]
    (ooxml, embedded labels, table is Dates);			

  3. Haga clic en Cargar datos.
  4. Abra el Visor del modelo de datos.
  5. Ahora puede ver que las dos tablas están separadas por completo.

    Visor del modelo de datos mostrando Table2 y Table 2a

    Visor del modelo de datos mostrando Table2 y Table 2a.
  6. Ahora que hemos terminado de demostrar la concatenación, ya no necesitaremos Table2a. Elimine todas las filas en la sentencia LOAD para Table2a y después haga clic en Cargar datos.