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.
Haga lo siguiente:
- Abra el Editor de carga de datos en la app Scripting Tutorial.
- Haga clic en la pestaña Dates.
- Haga clic en Cargar datos.
- 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.
- Haga clic en Cargar datos.
- Abra el Visor del modelo de datos.
- Haga clic en Mostrar vista previa.
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.
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:
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.
Solo se ha creado Table2. Seleccione Table2. La tabla tiene 256 filas.
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.
Haga lo siguiente:
- Edite la sentencia LOAD para Table2a, añadiendo Concatenate y eliminando el comentario de Week.
- Haga clic en Cargar datos.
- Abra el Visor del modelo de datos.
- Haga clic en Table2 en el visor del modelo de datos, y después haga clic en Vista previa.
- 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.
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.
Ahora puede ver que Table2a no se ha creado.
La tabla contiene los campos Date, Month, Quarter, Week y Year. El campo Week todavía se muestra, porque se cargó desde Table2.
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.
Haga lo siguiente:
- 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.
- Haga clic en Cargar datos.
- Abra el Visor del modelo de datos.
- 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.
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);
Ahora puede ver que las dos tablas están separadas por completo.