Gestión de Datos
Gestión de Datos
Gestión de Datos
Qlik Sense®
April 2020
Copyright © 1993-2020} QlikTech International AB. Reservados todos los derechos.
HELP.QLIK.COM
© 2020 QlikTech International AB. All rights reserved. Qlik®, Qlik Sense®, QlikView®, QlikTech®, Qlik
Cloud®, Qlik DataMarket ®, Qlik Analytics Platform®, Qlik NPrinting®, Qlik Connectors®, Qlik GeoAnalytics®,
Qlik Core®, Associative Difference®, Lead with Data™, Qlik Data Catalyst ™, Qlik Associative Big Data Index™
and the QlikTech logos are trademarks of QlikTech International AB that have been registered in one or more
countries. Other marks and logos mentioned herein are trademarks or registered trademarks of their
respective owners.
Contents
Para obtener información más detallada sobre las funciones de script y las funciones de
gráfico, consulte la ayuda online de Sintaxis de script y funciones de gráficos.
Este documento está tomado de la ayuda online de Qlik Sense. Va destinado a aquellos que deseen leer
partes de la ayuda fuera de línea, sin conexión, o imprimir algunas páginas con facilidad y no incluye
información adicional alguna como sucede con la ayuda online.
2 Gestión de datos
Cuando ya haya creado una app de Qlik Sense, el primer paso será añadir algunos datos para poder
explorarlos y analizarlos. Esta sección describe cómo añadir y gestionar datos, cómo construir un script de
carga de datos para modelos de datos más avanzados, cómo visualizar el modelo de datos resultante en el
visor del modelo de datos y también analiza las mejores prácticas de modelado de datos en Qlik Sense.
l Gestor de datos
Puede añadir datos de sus propias fuentes de datos, o de otras fuentes, como Qlik DataMarket sin
tener que aprender un lenguaje de script. Las selecciones de datos se pueden editar, y puede obtener
ayuda en la creación de las asociaciones de datos en su modelo de datos.
Puede construir un modelo de datos con procesos ETL (Extract, Transform & Load) utilizando el
lenguaje de script de carga de datos Qlik Sense. El lenguaje de script es potente y le permite realizar
transformaciones complejas y crear un modelo de datos escalable.
l ▶ Asociaciones
Puede crear y editar asociaciones entre tablas.
l ' Tablas
Puede hacerse una idea de todas las tablas de datos de la app, tanto si las añadió utilizando Añadir
datos, como si las cargó con el script de carga de datos. Cada tabla se muestra con su nombre de
tabla, el número de campos de datos y el nombre de la fuente de datos.
Haga lo siguiente:
Fuentes de datos
Fuente de
Descripción
datos
En app Seleccione de entre las fuentes de datos que están disponibles en su app. Pueden ser
archivos que haya adjuntado a la app.
También puede crear una fuente de datos y agregarle datos manualmente utilizando
la Entrada manual.
Ubicaciones de Seleccione de entre los archivos de una unidad de red, por ejemplo, de una unidad
archivo que haya definido su administrador.
Fuente de
Descripción
datos
Conexiones de Seleccione de entre las conexiones de datos definidas por usted o un administrador.
datos
Haga lo siguiente:
La tabla queda marcada ahora como Pendiente de actualizar y los cambios se aplicarán a los datos de la
app la próxima vez que cargue los datos.
Solo puede editar tablas de datos añadidas mediante Añadir datos. Si hace clic en @ en una
tabla que se cargó usando el script de carga, se abre el editor de carga de datos. Para más
información, vea Usar el editor de carga de datos (page 118).
La tabla se ha marcado ahora para su eliminación como Pendiente de eliminar y se eliminará la próxima
vez que cargue los datos.
Si ha utilizado campos de la tabla de datos en una visualización, eliminar la tabla de datos dará
como resultado un error que se muestra en la app.
Si tiene un número menor de fuentes de datos de lo que sería ideal, puede que se encuentre con algunos
problemas de asociación.
l Si hemos cargado dos campos que contienen los mismos datos pero nombres de campo diferentes
en dos tablas, probablemente sea una buena idea nombrar ambos campos de idéntica forma para
que las tablas se asocien.
l Si hemos cargado dos campos que contienen datos diferentes pero poseen nombres de campo
idénticos en dos tablas diferentes, necesitaremos renombrar al menos uno de los campos para
cargarlos como campos aparte, distintos uno de otro.
l Si hemos cargado dos tablas que contienen más de un campo en común.
Si desea asociar sus datos, le recomendamos que utilice la opción Añadir datos con el perfilado de datos
habilitado. Esta es la opción predeterminada. Puede verificar esta configuración haciendo clic en ¥ junto al
botón Añadir datos en la esquina inferior derecha de la página Añadir datos.
Qlik Sense efectúa un perfilado de los datos que deseamos cargar para ayudarnos a reparar las asociaciones
entre tablas. Las malas asociaciones y aquellas potencialmente buenas se resaltan y recibimos ayuda en la
selección de campos que asociar, basándose en un análisis de los datos.
Puede volver a cargar todos los datos de las fuentes externas de datos utilizando el botón ô en el pie de
página del Gestor de datos.
El botón ô carga todos los datos de la tabla seleccionada. No carga todos los datos de todas las tablas de
la app.
Si los datos del Gestor de datos no están sincronizados con los datos de la app, el botón Cargar datos se
muestra de color verde. En la vista Asociaciones, todas las tablas nuevas o actualizadas se indican
mediante un asterisco * y las tablas eliminadas se ven de un color gris más claro. En la vista Tablas, todas
las tablas nuevas, actualizadas o eliminadas se destacan de color azul y muestran un icono que indica el
estado de la tabla:
Haga lo siguiente:
Los datos de la app se actualizan ahora con los cambios que realizó en el Gestor de datos.
Para aplicar los cambios y cargar todos los datos en la tabla seleccionada desde fuentes de datos externas:
Haga lo siguiente:
Detalles muestra las operaciones actuales y las transformaciones realizadas en la tabla seleccionada. Esto
le muestra el origen de una tabla, los cambios actuales que se han realizado y la secuencia en la que se han
aplicado los cambios. Detalles le permite comprender más fácilmente cómo llegó una tabla a su estado
actual. Puede usar Detalles, por ejemplo, para ver fácilmente el orden en que se concatenaron las tablas.
Las tablas de datos definidas en el script de carga no se gestionan desde el Gestor de datos de forma
predeterminada. Es decir, podremos ver las tablas en la vista general de datos, pero no podremos eliminar o
editar las tablas en el Gestor de datos, y no se ofrecen recomendaciones de asociaciones para tablas
cargadas mediante el script. Si sincroniza sus tablas de script con el Gestor de datos no obstante, sus
tablas de script se añadirán como tablas de script gestionadas al Gestor de datos.
Si tiene tablas sincronizadas, no debe realizar cambios en el editor de carga de datos con el
Gestor de datos abierto en otra pestaña.
Podemos añadir secciones al script y desarrollar código que mejore e interactúe con el modelo de datos
creado en el Gestor de datos, pero hay algunas áreas en las que debemos ir con cuidado. El código de
script que escribamos puede interferir con el modelo de datos del Gestor de datos y crear problemas en los
siguientes casos:
Las opciones para añadir datos y las fuentes de datos que tiene disponibles dependen de su
configuración y plataforma de Qlik Sense.
En app
Archivos adjuntos. Despliegues: Qlik Sense Enterprise on Windows. Haga clic para adjuntar archivos a la
app o para ver los archivos que se adjuntaron a la app. Puede cargar datos desde estos archivos.
Entrada manual. Haga clic para crear una tabla en la app y añadir los datos a la app.
Ubicaciones de archivo
Ubicaciones de archivo . Despliegues: Qlik Sense Enterprise on Windows. Proporciona acceso a
ubicaciones de carpetas que su administrador haya definido.
Haga clic para cargar un archivo de datos o bien para añadir datos procedentes de un archivo que ya se ha
cargado.
Conexiones de datos
Despliegues: todas.
Muestra las conexiones que se han creado a una fuente de datos externa. La conexión aparece después de
haberla creado en Conectar con una nueva fuente de datos.
Contenido de datos
Qlik DataMarket. Plataformas: Qlik Sense Enterprise on Windows, Qlik Sense Desktop.
Las fuentes de Qlik DataMarket que están disponibles para el usuario dependen de su suscripción.
Proporciona acceso a fuentes QVD de QDC Catalog Service. Solo disponible si su administrador ha creado
una conexión a Qlik Data Catalyst.
Añadir datos
Haga clic para añadir datos a una app. El botón se habilitará después de haber creado una conexión y haber
seleccionado los datos que desea cargar. Puede añadir datos con el perfilado de datos habilitado o
deshabilitado. Recomendamos que el perfilado de datos esté habilitado y esta es la opción por defecto.
Haga clic en ¥ para deshabilitar el perfilado de datos.
l Configuraciones de acceso:
Los parámetros de administrador determinan a qué tipos de fuentes de datos podemos conectarnos.
l Conectores instalados
Qlik Sense incorpora soporte para muchas fuentes de datos. Los conectores incorporados son
instalados automáticamente por Qlik Sense. Para conectar con fuentes de datos adicionales puede
que necesite instalar conectores aparte, específicos para esas fuentes de datos. Dichos conectores
que se instalan aparte son suministrados por Qlik o un tercero.
l Disponibilidad de archivos locales.
Los archivos locales de su ordenador de escritorio solo están disponibles en Qlik Sense Desktop. No
están disponibles para su uso en una instalación de servidor de Qlik Sense.
Si tiene archivos locales que desee cargar en una instalación de servidor de Qlik Sense,
necesita adjuntar los archivos a la app o transferir los archivos a una carpeta que esté
disponible para el servidor de Qlik Sense, preferentemente una carpeta que ya se haya
definido mediante una conexión de datos de carpetas.
No agregue una tabla en el Gestor de datos que ya se haya agregado como una tabla con
secuencias de script con el mismo nombre y las mismas columnas de datos en el Editor de
carga de datos.
Puede eliminar conexiones desde Añadir datos haciendo clic con el botón derecho en la conexión y
seleccionando Ö Eliminar conexión .
Si elimina una conexión, debe eliminar cualquier tabla del Gestor de datos que utilizó esa
conexión antes de cargar los datos.
Haga lo siguiente:
1. Abra su app.
2. Abra el Gestor de datos y después haga clic en ú . También puede hacer clic en Añadir datos en
el menú ¨ .
3. En Conexiones de datos, seleccione una conexión existente.
Algunas conexiones van directas a las fuentes de datos, donde puede seleccionar las tablas y campos
que desee cargar. Por ejemplo, las conexiones a Salesforce.com o una base de datos, como IBM
DB2, van directamente a la fuente para la selección de datos.
4. Seleccione la fuente de datos específica desde la que desea añadir datos si la conexión le ofrece una
selección.
Esto difiere dependiendo del tipo de fuente de datos.
l Fuentes de datos basadas en archivos: Seleccione un archivo.
l Bases de datos: Define qué base de datos usar.
l Archivos web: Escriba la URL del archivo web.
l Otras fuentes de datos: Especificado por el conector.
5. Seleccione las tablas y los campos que desee cargar.
6. Opcionalmente también puede aplicar un filtro de datos si desea seleccionar un subconjunto de los
datos contenidos en los campos que ha seleccionado.
Si su fuente de datos es un archivo, seleccione Filtros. Junto a la tabla a la que desea agregar un
filtro, haga clic en Añadir filtro , seleccionar un campo, seleccionar una condición y después
introduzca un valor con el que filtrar.
Con las bases de datos y conectores, cuando seleccione Filtrar datos, se abrirá un cuadro de texto
para los criterios de filtro.
Tenga en cuenta lo siguiente:
l Se aplican filtros a los nombres de los campos de la base de datos. Si cambia el nombre de un
campo en el Gestor de datos, tiene que aplicar el filtro al nombre original del campo en la
base de datos. Por ejemplo, si un campo se denomina EMP en su base de datos y usted lo
redenomina EMPLOYEE en el Gestor de datos, tendrá que aplicar el filtro EMP = ‘filter_
value’.
l Puede borrar los filtros de datos en la vista Asociaciones del Gestor de datos. Para que los
cambios surtan efecto, cargue los datos haciendo clic en el botón Cargar datos. Debe dividir
las tablas concatenadas antes de borrar los filtros.
l Filtrar datos no está disponible actualmente para todos los conectores ni para los archivos
adjuntos. Filtrar tampoco está disponible para Qlik DataMarket.
7. Haga clic en Añadir datos para abrir los datos en la vista Asociaciones del gestor de datos. Esto le
permite continuar añadiendo fuentes de datos, transformar los datos y asociar las tablas en el Gestor
de datos.
El perfilado de datos está activo por defecto al hacer clic en Añadir datos. El perfilado de datos hace
lo siguiente:
l Recomienda asociaciones de datos.
l Califica automáticamente los campos comunes entre tablas. Esto agrega un prefijo único
basado en el nombre de la tabla.
l Asigna los campos de fecha y hora a autoCalendar.
Las tablas no se asocian automáticamente en los nombres de campos comunes. Puede asociar
tablas en la vista Asociaciones.
Si desea cargar los datos directamente en su app, haga clic en ¥ y después desactive
el perfilado de datos. Esto cargará los datos recién seleccionados de la fuente de datos
externa cuando agregue datos. Las tablas se asociarán automáticamente en los
nombres de campos comunes. Los campos de fecha y hora no se crearán.
Para más información, vea Gestionar las asociaciones de datos (page 110).
8. Haga clic en Cargar datos cuando haya terminado de preparar los datos. Si se detectaran
problemas serios, debe resolverlos en el Gestor de datos antes de poder cargar datos en la app.
Para más información, vea Resolución de problemas - Cargar datos (page 287).
Para volver a cargar todos los datos que ha seleccionado de la fuente externa, use el botón ô en el pie de
página del Gestor de datos. Esto le asegura que obtiene todos los datos actuales de la fuente para las
selecciones que ha realizado. Recargar todos los datos puede llevar más tiempo que cargar solo los nuevos
datos. Si los datos cargados previamente no se han modificado en el origen de datos, no es necesario
recargar todos los datos.
No agregue una tabla en el Gestor de datos que ya se haya agregado como una tabla con
secuencias de script con el mismo nombre y las mismas columnas de datos en el Editor de
carga de datos.
Puede eliminar conexiones desde Añadir datos haciendo clic con el botón derecho en la conexión y
seleccionando Ö Eliminar conexión .
Si elimina una conexión, debe eliminar cualquier tabla del Gestor de datos que utilizó esa
conexión antes de cargar los datos.
Haga lo siguiente:
Si desea cargar los datos directamente en su app, haga clic en ¥ y después desactive
el perfilado de datos. Esto cargará también todos los datos existentes de fuentes de
datos cuando agregue los datos. Las tablas se asociarán automáticamente en los
nombres de campos comunes. Los campos de fecha y hora no se crearán.
Para más información, vea Gestionar las asociaciones de datos (page 110).
8. Haga clic en Cargar datos cuando haya terminado de preparar los datos. Si se detectaran
problemas serios, debe resolverlos en el Gestor de datos antes de poder cargar datos en la app.
Para más información, vea Resolución de problemas - Cargar datos (page 287).
Un archivo adjunto solo está disponible en la app a la que se adjunta. No hay conexión con su archivo de
datos original, así que si actualizó el archivo original debe actualizar el archivo adjunto.
Para evitar exponer datos restringidos, elimine todos los archivos adjuntos con la
configuración de sección de acceso antes de publicar la app.
Los archivos adjuntos se incluyen cuando la app se publica. Si la app publicada se copia, los
archivos adjuntos se incluyen en la copia. Sin embargo, si se han aplicado restricciones de
sección de acceso a los archivos de datos adjuntos, la configuración de la sección de acceso
no se conserva al copiarse los archivos, por lo que los usuarios de la app copiada podrán ver
todos los datos en los archivos adjuntos.
Limitaciones
l El tamaño máximo de un archivo adjunto a la app es de 50 MB.
l El tamaño total máximo de los archivos adjuntos a la app, incluidos los archivos de imagen cargados
en la biblioteca de medios multimedia, es de 200 MB.
l No es posible adjuntar archivos en Qlik Sense Desktop.
Haga lo siguiente:
Al adjuntar archivos de esta manera Qlik Sense tratará de seleccionar los ajustes óptimos para la carga de
datos, por ejemplo, reconociendo los nombres de campos incrustados, los delimitadores de campos o
conjuntos de caracteres. Si se agregara una tabla con parámetros que no son óptimos se puede corregir la
configuración abriendo la tabla en el editor de tablas, y haciendo clic en Seleccionar datos de la fuente .
No agregue una tabla en el Gestor de datos que ya se haya agregado como una tabla con
secuencias de script con el mismo nombre y las mismas columnas de datos en el Editor de
carga de datos.
Haga lo siguiente:
Si desea cargar los datos directamente en su app, haga clic en ¥ y después desactive
el perfilado de datos. Esto cargará también todos los datos existentes de fuentes de
datos cuando agregue los datos. Las tablas se asociarán automáticamente en los
nombres de campos comunes. Los campos de fecha y hora no se crearán.
7. Haga clic en Cargar datos cuando haya terminado de preparar los datos. Si se detectaran
problemas serios, debe resolverlos en el Gestor de datos antes de poder cargar datos en la app.
Haga lo siguiente:
Si elimina un archivo adjunto que esté en uso en la app, no podrá cargar la app hasta haber
eliminado las referencias al archivo en el Gestor de datos o en el script de carga. Puede editar
los scripts de carga en el Editor de carga de datos.
No hay ninguna conexión con su archivo de datos original. Si actualiza el archivo original, necesita actualizar
el archivo que va adjunto a la app. Después ya puede cargar los datos actualizados en la app. Después de
cargar los datos en el Gestor de datos, haga clic en ô (Actualizar datos de la fuente ) para ver los
datos actualizados en la vista de tabla.
No agregue una tabla en el Gestor de datos que ya se haya agregado como una tabla con
secuencias de script con el mismo nombre y las mismas columnas de datos en el Editor de
carga de datos.
Haga lo siguiente:
Para añadir datos manualmente, abra Añadir datos, seleccione Entrada manual, introduzca sus datos en
la tabla y luego agregue la tabla al Gestor de datos. El editor de tablas comienza con una fila y dos
columnas, pero a medida que añade datos a la tabla, las filas y columnas adicionales se agregan
automáticamente a la tabla.
Entrada manual no se guarda automáticamente a medida que se introducen los datos. Los
datos introducidos pueden perderse si la pantalla se actualiza, si la sesión expira o si la
conexión se pierde antes de que los datos se agreguen al Gestor de datos.
Además de escribir datos, puede copiarlos y pegarlos desde otras fuentes. Entrada manual conserva las
columnas y filas de datos copiadas de las tablas de Excel.
Hay una serie de métodos abreviados de teclado que puede utilizar para trabajar con mayor eficacia y
facilidad en la Entrada manual. El comportamiento de los accesos directos varía dependiendo de si está
seleccionando celdas, filas o columnas o si está editando celdas en la tabla. La tabla siguiente contiene los
accesos directos de selección:
Pestaña Mueve la selección de celda a la derecha. Si no existe una celda a la derecha, se mueve a
la primera celda de la fila siguiente.
Mayús+Tab Mueve la selección de celda a la izquierda. Si no existe una celda a la izquierda, se mueve
a la primera celda de la fila anterior.
Las tablas creadas con la Entrada manual se pueden editar posteriormente para añadir o eliminar
contenido. Para más información, vea Actualizar una tabla desde la fuente de datos (page 56).
Haga doble clic en una celda para comenzar a introducir datos en la celda.
Mientras edita una celda, al hacer clic en cualquier otra celda de la tabla, se confirma su edición y se
selecciona la otra celda.
6. Cuando sus datos estén completos, haga clic en Añadir datos.
Si una tabla contiene una fila de cabecera, los nombres de campo por lo general se detectan
automáticamente, pero puede que tenga que modificar el parámetro Nombres de campo en algunos
casos. Puede que también necesite variar algunas otras opciones de tabla, por ejemplo el Tamaño de
cabecera o el Juego de caracteres para que los datos se interpreten correctamente. Las opciones de
tabla son diferentes según los distintos tipos de fuentes de datos.
Si añade datos de una base de datos, la fuente de datos puede contener varias tablas.
Haga lo siguiente:
Haga lo siguiente:
Tamaño Defina el número de filas que se deben omitir como cabecera de tabla, por lo general
de filas que contengan información general que no esté en un formato de columna.
cabecera
Ejemplo
La hoja de cálculo presentará el siguiente aspecto:
Hoja de cálculo
Equipo: AEJ12B - -
Fecha: 2015-10-05 09 - -
En este caso probablemente desee ignorar las dos primeras líneas y cargar una tabla con los campos
Timestamp, Order, Operator y Yield. Para lograr esto, utilice estos parámetros:
Parámetros para ignorar las dos primeras líneas y cargar los campos
Elemento
Descripción
de IU
Tamaño 2
de Esto significa que las dos primeras líneas se consideran datos de cabecera y se
cabecera ignoran cuando se carga el archivo. En este caso, las dos líneas que comienzan con
Machine: y Date: se ignoran, ya que no son parte de los datos de la tabla.
2. Seleccione la primera hoja de la que seleccionar datos. Puede seleccionar todos los campos de una
hoja marcando la casilla situada junto al nombre de hoja.
3. Seleccione los campos que desee cargar marcando la casilla situada junto a cada campo que quiera
cargar.
4. Cuando haya terminado con la selección de datos, haga clic en Añadir datos para continuar con la
creación de perfiles de datos y ver recomendaciones para las relaciones de la tabla.
Si desea cargar los datos directamente en su app, haga clic en ¥ junto a Añadir datos y después
desactive el perfilado de datos. Esto cargará los datos seleccionados tal cual están, saltándose el
paso de perfilado de datos y ya puede comenzar a crear visualizaciones. Las tablas se asociarán
empleando las asociaciones naturales, esto es, mediante sus campos de idéntico nombre.
Haga lo siguiente:
Cuando haya terminado con la selección de datos, haga clic en Añadir datos para continuar con la
creación de perfiles de datos y ver recomendaciones para las relaciones de la tabla.
Si desea cargar los datos directamente en su app, haga clic en ¥ junto a Añadir
datos y después desactive el perfilado de datos. Esto cargará los datos seleccionados
tal cual están, saltándose el paso de perfilado de datos y ya puede comenzar a crear
visualizaciones. Las tablas se asociarán empleando las asociaciones naturales, esto
es, mediante sus campos de idéntico nombre.
4.
Tamaño de cabecera El número de líneas que desee omitir como cabecera de tabla.
Elemento de IU Descripción
Comentario Los archivos de datos pueden contener comentarios entre registros, los cuales
se caracterizan por una línea inicial con uno o más caracteres especiales, por
ejemplo //.
Especifique uno o más caracteres que denotarán una línea de comentario. Qlik
Sense no carga líneas que comiencen con los caracteres aquí especificados.
Ignorar EOF Seleccione Ignorar EOF si sus datos contienen caracteres de final de archivo
como parte del valor de campo.
l Introduzca manualmente las posiciones de salto de campo separadas por comas en Posiciones de
salto de campo . Cada posición marca el inicio de un campo.
Example: 1,12,24
l Habilite Saltos de campo para editar las posiciones de salto de campo interactivamente en la vista
previa de los datos de campo. Las Posiciones de salto de campo se actualizan con las posiciones
seleccionadas. Podemos:
l Hacer clic en la vista previa de datos de campo para insertar un salto de campo.
l Hacer clic en un salto de campo para eliminarla.
l Arrastrar un salto de campo para moverlo.
Nombres de campo Especifique si la tabla contiene Nombres de campo incluidos o Sin nombres
de campo .
Tamaño de cabecera Establezca el Tamaño de cabecera en el número de líneas que desee omitir
como cabecera de tabla.
Elemento de IU Descripción
Tamaño de línea de Defina el número de líneas que ocupa un registro en el archivo de tabla. Por
registro defecto es 1.
Archivos HTML.
Los archivos HTML pueden contener varias tablas. Qlik Sense interpreta todos los elementos con una
etiqueta <TABLE> como una tabla.
Archivos XML.
Puede cargar datos que estén almacenados en formato XML.
Archivos QVD.
Puede cargar datos que estén almacenados en formato QVD. QVD es un formato nativo de Qlik y solo
pueden leerlo y escribirlo Qlik Sense o QlikView. El formato de archivo está optimizado para mejorar la
velocidad de lectura de datos desde un script Qlik Sense, pero es al mismo tiempo muy compacto.
Archivos QVX.
Puede cargar datos almacenados en formato Qlik data eXchange (QVX). Los archivos QVX se crean
mediante conectores personalizados desarrollados con Qlik QVX SDK.
Archivos KML.
Puede cargar archivos de mapas que estén almacenados en formato KML, para usarlos en visualizaciones
de mapas.
Haga lo siguiente:
l Haga clic en la flecha hacia atrás para volver al paso anterior de Añadir datos.
La primera vez que agregue datos de un archivo en el paso Añadir datos, puede aplicar condiciones de
filtrado haciendo clic en Filtros.
Botón Filtros
Posteriormente, puede cambiar las condiciones haciendo clic en su tabla en el Gestor de datos y luego
haciendo clic en Editar esta tabla . Haga clic en Seleccionar datos y después clic en Filtros.
Después de agregar los datos a su app y aplicar cualquier condición de filtrado, puede cargar los datos en su
app.
Para una manipulación de datos más avanzada, use el Editor de carga de datos. Consulte
los tutoriales Scripts para principiantes y Pasos siguientes en la elaboración de scripts para
obtener más información.
l =
l >
l <
l >=
l <=
l Las condiciones se aplican alfabéticamente a los datos de texto. Las condiciones son sensibles a
mayúsculas y minúsculas.
l Puede usar más de una letra para los datos de texto. Por ejemplo, >az devolverá la palabra taza,
igual que >=ta. Tenga en cuenta que >t también devolverá taza.
l Cuando utiliza más de una condición =, todas deben evaluarse y devolver valores verdaderos. No
obstante, si utiliza más de una condición = en el mismo campo, devolverá todos los valores que se
evalúen como verdaderos.
l Las condiciones < y >, cuando se combinan, deben devolver todas valores verdaderos. Si estas
condiciones se combinan con =, todas las condiciones deben evaluarse como verdaderas.
l Las condiciones <= y >=, cuando se combinan, deben devolver todas valores verdaderos. Si estas
condiciones se combinan con =, todas las condiciones deben ser evaluadas como verdaderas.
l Los filtros en los campos de fecha de archivos QVD no son compatibles.
Ejemplos
Estos ejemplos utilizan los siguientes valores de un solo campo (una columna en una tabla): taza, tenedor y
cuchillo.
l Condiciones:
l =taza
l =tenedor
l =cuchillo
l Devuelve: taza, tenedor, cuchillo
l La condición igual devuelve todos los valores que son verdaderos.
l Condiciones:
l >b
l <d
l Devuelve: taza
l La letra c es a la vez mayor que b y menor que d.
l Condiciones:
l <b
l >d
l Devuelve: cero valores
l No puede haber valores que sean a la vez b y mayor que d.
l Condiciones:
l =tenedor
l >g
l Devuelve: cero valores
l No puede haber valores que sean a la vez tenedor y mayor que g.
Filtrar datos no está disponible para todos los conectores o Qlik DataMarket.
Introduzca una expresión de filtro de datos seleccionando Filtrar datos en el paso Seleccione los datos
para cargar . Si selecciona Filtrar datos, se abre un cuadro de texto donde se introduce una expresión de
filtro. Por ejemplo:
Filtrar datos selecciona entre campos individuales, por ejemplo Ventas. Funciona como una cáusula SQL
WHERE. La mayoría de los operadores y palabras clave utilizadas en cáusulas WHERE pueden usarse con
Filtrar datos. Ejemplos de operadores válidos son:
l =
l >
l >=
l <
l <=
l IN
l BETWEEN
l LIKE
l IS NULL
l IS NOT NULL
Qlik Sense crea una cáusula WHERE en el script de carga de datos desde la expresión introducida en Filtrar
datos.
El operador AND se puede usar para combinar operadores, como cuando desea filtrar por más de un campo.
Por ejemplo:
El operador OR se puede usar para filtrar datos que coincidan con cualquiera de las condiciones. Por
ejemplo:
Puede obtener los mismos resultados del operador IN. El operador IN es un método abreviado para usar
múltiples condiciones OR. Por ejemplo:
Qlik DataMarket también ofrece conjuntos de datos de la base de datos Eurostat, incluyendo Database by
themes, Tables by themes, Tables on EU policy y Cross cutting topics.
Cuando añadimos datos de Qlik DataMarket, seleccionamos categorías y a continuación filtramos los
campos de datos disponibles en dichas categorías. Las categorías de DataMarket contienen grandes
cantidades de datos, y filtrarlos permite tomar subconjuntos de los datos y reducir la cantidad de datos
cargados.
Algunos datos de Qlik DataMarket están disponibles de forma gratuita. Los paquetes de datos marcados
como Premium están disponibles mediante una tarifa de suscripción.
Antes de poder usar los datos de Qlik DataMarket, debemos aceptar los términos y condiciones para su uso.
También, si hemos comprado una licencia para paquetes de datos premium, debemos introducir nuestras
credenciales de acceso para poder utilizar los datos en dichos paquetes. Una vez aplicadas las credenciales
de acceso, los datos premium se marcan como Con licencia .
Si acepta los términos y condiciones pero no introduce una licencia para cualquiera de los paquetes de datos
premium, los paquetes de datos premium llevan junto a ellos un botón Comprar que le permite adquirir una
licencia. El botón Comprar reemplaza a la indicación Premium.
No es necesario aceptar los términos y condiciones de Qlik DataMarket cuando usamos Qlik
Sense Desktop. Tampoco se requieren credenciales de acceso porque los paquetes de datos
premium no están disponibles en Qlik Sense Desktop.
Haga lo siguiente:
1. Abra su app.
2. Abra el Gestor de datos y después haga clic en ú . También puede hacer clic en Añadir datos en
el menú ¨ .
3. Haga clic en Qlik DataMarket para mostrar los paquetes Qlik DataMarket.
Si desea cargar los datos directamente en su app, haga clic en ¥ y después desactive
el perfilado de datos. Esto cargará también todos los datos existentes de fuentes de
datos cuando agregue los datos. Las tablas se asociarán automáticamente en los
nombres de campos comunes. Los campos de fecha y hora no se crearán.
8. Haga clic en Cargar datos cuando haya terminado de preparar los datos. Si se detectaran
problemas serios, debe resolverlos en el Gestor de datos antes de poder cargar datos en la app.
Los conjuntos de datos contienen al menos una dimensión y una medida, y todos ellos tienen dimensiones
de tiempo. Antes de poder añadir datos a una app, debe seleccionar al menos una dimensión y una medida y
establecer el período de tiempo. Cuando seleccione dimensiones, debe incluir dimensiones que contengan
datos. Cuando los datos están estructurados jerárquicamente, es posible que una rama padre no contenga
datos.
Algunas dimensiones contienen múltiples representaciones de los datos. Por ejemplo, las ubicaciones
geográficas designadas por el nombre de país también contienen códigos ISO (Organización Internacional
de normalización) para los países. Las monedas contienen los nombres habituales, como Pound sterling y
Euro, así como su código ISO 4217 GBP y EUR. Los valores adicionales para las dimensiones no se pueden
seleccionar por separado. Se muestran en la descripción de la dimensión.
Datos seleccionados para cargar la vista con los valores extra mostrados en la descripción de la dimensión.
En algunos conjuntos de datos, no es necesario seleccionar una medida porque el conjunto de datos
contiene sólo una medida. Las selecciones de medidas se muestran sólo cuando hay más de una medida
entre las que elegir. Por ejemplo, el conjunto de datos US per capita personal income by state muestra
solo la dimensión geográfica y el período de tiempo porque solo hay una medida en el conjunto de datos:
ingreso personal per cápita.
También hay conjuntos de datos que no requieren selección de las dimensiones. Por ejemplo, los conjuntos
de datos US federal interest rate y US consumer price index for urban consumers solo requieren que
seleccione el período de tiempo porque solo hay una dimensión y una medida en esos conjuntos de datos.
En el primer caso, la medida es el tipo de interés federal y la dimensión es los Estados Unidos. En el
segundo caso, la medida es el índice de precios al consumo, y la dimensión es los consumidores urbanos de
Estados Unidos.
Los conjuntos de datos pueden contener sólo dimensiones que no tienen datos adjuntos para las medidas.
Un conjunto de datos puede contener, por ejemplo, sólo una lista de los principales ejecutivos de la empresa.
En tales casos, la dimensión se preselecciona porque no hay selecciones que hacer dentro de la dimensión.
Muchos conjuntos de datos en Qlik DataMarket contienen dimensiones y medidas que están estructuradas
jerárquicamente. Los conjuntos de datos de DataMarket que están estructurados jerárquicamente contienen
jerarquías de dos y tres niveles. Cómo hacer selecciones en dichas jerarquías depende de los datos de cada
nivel.
Los indicadores de desarrollo seleccionados contienen la dimensión Área geográfica con tres niveles.
Una selección de World , Region o Country es válida por sí misma. Cualquier selección que incluya el valor
más alto carga todos los datos para las regiones y países incluso si también se han seleccionado regiones y
países específicos. Pero si una región se ha seleccionado por sí misma, entonces sólo se carga esa región
del mundo.
Si selecciona ambos, World y North America , los datos del mundo se muestran aparte de los datos de la
región North America.
Si selecciona Canada desde Country, entonces obtendrá datos aparte del mundo, de la región North
America y del país Canada.
Si selecciona Canada desde Country pero no selecciona North America , entonces los datos agregados de
North America no se cargan. Solo los datos de Canada se cargan para la región North America.
Las características sociales de EEUU (por estado) contienen tres ramas principales sin datos; Ascendencia,
estado de discapacidad de la población civil no institucionalizada y nivel educativo.
Cuando se selecciona el campo padre, todos los hijos de la rama se seleccionan también automáticamente.
Para seleccionar algunos, en lugar de seleccionar todos los hijos de la rama, puede, o bien deseleccionar
archivos de forma individual desde la selección automática del padre, o seleccionar campos de forma
individual sin seleccionar el campo padre.
Por ejemplo, el conjunto de datos World population by country contiene una dimensión Sex. Tiene los
valores del campo del subconjunto Female y Male . Cuando se carga Género en Qlik Sense, contiene tres
valores: Female , Male y un valor en blanco para el valor del campo agregado.
Gráfico de barras con la dimensión Género, que muestra la población total masculina y femenina de Argentina
como dos barras aparte en un gráfico de barras, con una barra sin nombre para el total agregado.
En el ejemplo que se muestra en la imagen, el valor del campo agregado contiene el total de Female y
Male .
El campo del valor en blanco se incluye siempre que se incluyen todos los valores del campo del subconjunto
de una dimensión. Los totales asociados a los valores de campos agregados están presentes en los datos,
por lo que podrían causar un recuento doble si se incluyen al calcular agregados de los datos.
Dependiendo de las visualizaciones que utilice, puede excluir los valores de campos agregados. Por ejemplo:
l Defina el valor en blanco como nulo por medio del panel de perfiles de datos Definir nulos en
Gestor de datos y borre Incluir valores nulos en la sección Dimensión de Propiedades para
excluir el valor nulo de la dimensión.
l Utilice una expresión para limitar los valores incluidos en la dimensión y, a continuación, borre Incluir
valores nulos en la sección Dimensión de Propiedades. Por ejemplo, en la dimensión Género ,
se puede utilizar la expresión =if(match(Sex,'Female','Male'),Sex) para excluir el valor del campo
agregado.
l Utlice expresiones de Análisis de conjuntos para excluir de una medida los números agregados del
valor en blanco.
Cuando trabaje con conjuntos de datos como World population by country, que contienen
múltiples campos con datos agregados, asegúrese de que las tablas con esos campos
agregados no estén directamente asociadas. Si se asocian directamente, es probable que
creen una referencia circular.
Por ejemplo, si busca el término europa, obtiene una primera lista de todos los conjuntos de datos que
contienen el término Europa en el título, seguido de los conjuntos de datos que contienen datos etiquetados
con el término. En el caso del término europa, uno de los conjuntos de datos encontrados es Selected
development indicators, que contiene el término en su dimensión Geographical area - Europe & Central
Asia.
DataMarket busca el término o frase literal que introducimos, y también busca en términos y sinónimos
relacionados. Un término introducido en singular también se busca en su forma plural. Por ejemplo, los
términos currency y index tienen las formas plurales --currencies y indices-- que también se buscan al
mismo tiempo que sus formas singulares.
La herramienta de búsqueda también busca resultados en función de la raíz léxica de los términos. Por
ejemplo, si busca el término production, la forma raíz de la palabra --product-- también se busca.
DataMarket no busca términos parciales. Por ejemplo, no encuentra la cadena "prod" aunque
forme parte de los términos product y production, que son términos que el motor de búsqueda
sí encuentra en frases como Gross Domestic Product.
Qlik DataMarket también contiene un índice de sinónimos, por lo que se puede encontrar una amplia gama
de datos sin necesidad de utilizar el término exacto empleado en el nombre o la descripción de la
recopilación de datos o en los campos de datos. Por ejemplo, los conjuntos de datos que usan la dimensión
etiquetada como Sex también se encuentran con el término gender. El servicio de búsqueda de DataMarket
tiene más de 200 conjuntos de sinónimos. Algunos sinónimos que incluye son:
l ingresos, ganancias
l GBP, libras
l sanidad, salud, cuidado de la salud
l mano de obra laboral, trabajo
l retribución, salario, sueldo, ganancias
Los resultados de la búsqueda se muestran de mayor a menor relevancia. La relevancia viene determinada
por el lugar en que se encuentre el término de búsqueda. Los términos que se encuentran en nombres o
descripciones de los conjuntos de datos tienen una mayor relevancia que los términos que se encuentran
dentro de los valores del conjunto de datos.
Cuando se introducen varios términos de búsqueda, los resultados no incluyen necesariamente todos los
términos. Si solo se encuentra uno de los términos, la entrada que contiene el término se devuelve como uno
de los resultados de búsqueda. Sin embargo, las entradas que contienen más de los términos de búsqueda
introducidos tienen más relevancia.
Para restringir las búsquedas, puede excluir términos de la búsqueda colocando un guion antes de los
términos cuando estos se introducen en la cadena de búsqueda. Por ejemplo, puede buscar "US" pero
excluir unemployment colocando un guión antes del término de búsqueda "-unemployment."
Algunas dimensiones ofrecen campos adicionales cuando se cargan. Los campos extra proporcionan
representaciones adicionales de las dimensiones. En el conjunto de datos 3x3 currency exchange rates,
las monedas también se enumeran por su representación iso4217. Por ejemplo:
Monedas
Moneda base Euro
Los conjuntos de datos con datos de población por país y región ofrecen representaciones de dimensión
adicionales para los nombres de las regiones, como los códigos ISO 3166.
Estas asociaciones son necesarias para interpretar las relaciones entre las dimensiones y las medidas que
son importantes en las visualizaciones. Por ejemplo, si una empresa desea utilizar los datos de población de
US para comparar sus ventas de producto con los grupos de edad en varios estados de US, las dimensiones
Age y Location deben asociarse a través de la tabla de medidas para obtener el número de personas de
cada grupo en los distintos estados.
Cuando los conjuntos de datos tienen múltiples tablas de dimensiones, a menudo hay asociaciones
adicionales que se pueden hacer. Por ejemplo, los campos agregados generalmente tienen el mismo valor
("Total") eso sugiere una posible asociación. Esas asociaciones no son útiles, sin embargo, y pueden
ocasionar referencias circulares.
La estructura de múltiples tablas aumenta la eficiencia de la carga de datos y puede mejorar las asociaciones
de datos.
Haga lo siguiente:
Compruebe las visualizaciones que utilizan el conjunto de datos que convirtió en múltiples tablas. Deberían
funcionar tal como se diseñaron originariamente a menos que haya cambiado los datos seleccionados, ya
sea mediante la adición o eliminación de algunas de las selecciones realizadas cuando la tabla se cargó
previamente.
Los datos de DataMarket proceden de una amplia variedad de fuentes, por ello las asociaciones con sus
datos podrían no resultar evidentes de inmediato. Puede que se encuentre con que varias de las
asociaciones deben ser editadas en el paso previo. Por ejemplo, podría estimar valioso evaluar ciertas
características de los países en los que opera. Pero los campos de países de algunos conjuntos de datos de
DataMarket podrían no tener suficientes valores en común con sus datos corporativos para hacer que la
asociación sea útil. Por eso es por lo que debe evaluar siempre con cuidado las asociaciones entre sus datos
y los datos de DataMarket.
Las imágenes a continuación demuestran cómo integrar datos corporativos y datos de DataMarket para crear
visualizaciones potentes de Qlik Sense.
Los datos de la empresa en este ejemplo permiten agrupar los datos de ventas por país. Un gráfico de barras
que compara las ventas por país. Esto puede darle una idea de cómo se está comportando su empresa en
todos sus mercados.
Para ver qué tal lo está haciendo en cada país, se podrían comparar las ventas de su empresa con los datos
del país, lo que nos indica la fuerza de ese mercado. Por ejemplo, podría comparar las ventas en cada país
con el Producto Interior Bruto del país (GDP). O se podrían comparar las ventas con la demografía de su
mercado objetivo. Si el objetivo de su empresa son personas de 21 a 35 años, se puede ver cuántas
personas de esa edad tienen los países. O ver qué porcentaje de la población total está en ese rango de
edad.
Qlik DataMarket contiene un conjunto de datos en el grupo Essentials Free llamado Select development
indicators que proporciona una serie de medidas económicas, incluidas tasas de crecimiento GDP,
alfabetización, usuarios de Internet, población total y GDP per capita in US dollars. Para asociar datos de
países desde Select development indicators, los datos corporativos deben tener un campo que coincida con
el campo Country del conjunto de datos DataMarket. Si los datos corporativos tienen muchos más países
que Select development indicators, la asociación no sería sólida y probablemente no sea útil. Si los datos
corporativos tienen menos países que Select development indicators, la asociación probablemente sea útil
para una comparación.
Suponiendo que exista una buena asociación entre los campos de país de los datos corporativos y los datos
de DataMarket, puede agregar GDP per capita in US dollars al gráfico de barras de ventas para comparar las
ventas de cada país con el Producto Interior Bruto (PIB) (GDP en inglés).
Al seleccionar el campo Base currency en el conjunto de datos 3x3 currency exchange rates, seleccionaría
solo dólares estadounidenses porque esa es la moneda en la que se registran las ventas. En el conjunto de
datos corporativos utilizado en esta ilustración, hay un campo llamado Base currency que indica la moneda
que usa cada cliente. Sin embargo, contiene doce monedas diferentes, y como resultado, el Gestor de
datos recomienda no asociar los dos campos. No debería asociar esos campos porque las monedas en los
datos corporativos que no corresponden a dólares estadounidenses y euros pueden interferir con algunas
comparaciones entre dólares y euros. El modelo de datos presentará entonces el siguiente aspecto:
La Quote currency de 3x3 currency exchange rates debería ser Euro. La selección DateTime debería ser
Most recent porque solo desea la tasa de cambio actual, no los datos históricos, para la visualización KPI.
Para obtener Euro Sales, simplemente multiplique Sum(Sales) por Exchange rate en el conjunto de datos
3x3 currency exchange rates.
Aquí es donde es importante que los campos Base currency no estén enlazados porque, como se indicó
anteriormente, el campo del conjunto de datos corporativos Base currency contiene doce monedas
diferentes. Cuando el cálculo del tipo de cambio se realiza en los países de forma individual, la moneda base
de cada país se utilizaría si las tablas estuvieran vinculadas. Pero los datos de la empresa no contienen
ningún valor de ventas en la mayoría de esas doce monedas. Contiene los valores de venta solo en dólares
estadounidenses. Y la Base currency del conjunto de datos DataMarket es solo dólares estadounidenses, por
lo que para cualquier país que tenga un valor de Base currency distinto al dólar estadounidense en los datos
corporativos, Sales in euros sería un valor nulo si las dos tablas estuvieran enlazadas.
Necesita tener acceso a Qlik Data Catalyst para usar QDC Catalog Service y ver el catálogo
de QVD desde el interior del gestor de datos de Qlik Sense.
Servicio de catálogo
QDC Catalog Service ofrece información y acciones inmediatas para QVD en todo el ecosistema de datos,
accesible directamente desde el interior de Qlik Sense.
l Marco de KPI que mide QVD contra métricas operativas, de tamaño y de popularidad.
l Buscar y filtrar sus datos.
l Muestra información sobre el recuento de filas, el recuento de campos, la última carga, la ruta
relativa, la fuente, las etiquetas y el detalle de puntuación de KPI
Para editar una tabla, seleccione la tabla en el Gestor de datos y haga clic en @ . El editor de tabla se
muestra, con una vista previa de los datos que hay en la tabla. Cada campo tiene un menú de campo con
opciones de transformación. El menú del campo se abre haciendo clic en Ô . Al seleccionar un campo se
muestra el panel de perfiles de datos, que contiene un resumen de los datos del campo, así como opciones
de transformación adicionales.
Si los datos contienen registros con idénticos datos en todos los campos que se cargan, estos
vienen representados por un único registro en la tabla de vista previa.
Haga lo siguiente:
La tabla se ha renombrado.
Renombrar un campo
Puede renombrar los campos de una tabla para obtener un nombre mejor, que sea más fácil de comprender.
Haga lo siguiente:
1. Haga clic en el nombre de campo que desee renombrar, o seleccione Renombrar en el menú del
campo.
2. Introduzca el nuevo nombre.
Los nombres de campo deben ser únicos. Si tiene campos con el mismo nombre en
varias tablas, Qlik Sense cualificará los nombres de campo cuando añada datos, es
decir, añadirá el nombre de tabla como prefijo.
El campo se ha renombrado.
Estos son los casos más habituales en los que necesita crear una asociación personalizada en lugar de
seguir las recomendaciones.
l Ya sabe con qué campos asociar las tablas, pero el resultado para este par de tablas es demasiado
bajo como para mostrarlo en la lista de recomendaciones.
Cree una asociación basada en un único campo en cada tabla.
l Las tablas contienen más de un campo común y deben usarse para formar la asociación.
Cree una clave compuesta.
En muchos casos es más fácil gestionar las asociaciones desde la vista de Asociaciones.
l ⏪ General
l G Fecha
l õ Fecha-hora
l , Geodatos
Si los datos no se interpretaron de la forma correcta, puede definir el tipo de campo. También puede cambiar
el formato de entrada y presentación de un campo de datos o de fecha-hora.
Los campos que contienen información geográfica en forma de nombres o códigos, como por ejemplo los
códigos postales, no pueden utilizarse para la correspondencia (o mapeado) a menos que se designen como
campos de Geodatos.
Para más información, vea Ocultar campos del análisis (page 75).
Para más información, vea Evaluar los datos de campos de tabla antes de cargar los datos (page 75).
Para más información, vea Reemplazar valores de campo en una tabla (page 77).
Para más información, vea Definir valores de campo como nulos en una tabla (page 79).
Para más información, vea Personalizar el orden de los valores de dimensión (page 80).
Para más información, vea Dividir un campo en una tabla (page 81).
Para más información, vea Ver los detalles de transformación de tablas y campos en el Gestor de datos
(page 99).
Para más información, vea Despivotar datos de una tabla cruzada en el gestor de datos (page 87).
Haga lo siguiente:
La tabla se actualiza ahora con campos conforme a las selecciones que ha efectuado.
Puede añadir campos calculados para que gestionen casos como estos. Un campo calculado utiliza una
expresión para definir el resultado del campo. Puede utilizar campos, funciones y operadores en la
expresión. Solo puede remitir a campos que estén en la tabla que está editando.
Haga lo siguiente:
Los datos de la tabla se ordenan ahora por orden ascendente en relación a este campo. Si desea ordenarlos
por orden descendente, seleccione de nuevo Ordenar .
En muchos casos es más fácil gestionar sus asociaciones desde la vista de Asociaciones.
Estos son los casos más habituales en los que necesita crear una asociación personalizada en lugar de
seguir las recomendaciones.
l Ya sabe con qué campos asociar las tablas, pero el resultado para este par de tablas es demasiado
bajo como para mostrarlo en la lista de recomendaciones.
Cree una asociación basada en un único campo en cada tabla.
l Las tablas contienen más de un campo común y deben usarse para formar la asociación.
Cree una clave compuesta.
Haga lo siguiente:
1. Desde la vista general del gestor de datos, haga clic en @ en una de las tablas que desee asociar.
Se abre el editor de tabla.
2. Seleccione Asociar en el menú de campo del campo que desee utilizar en el campo clave.
Se abre el editor Asociar tablas, con una vista previa del campo que ha seleccionado en la tabla
izquierda. Ahora debe seleccionar qué campo asociar con éste en la tabla a mano derecha.
3. Haga clic en Seleccionar tabla y seleccione la tabla a la que asociarlo.
4. Haga clic en P y seleccione el campo con el que asociarlo.
La tabla a mano derecha mostrará una vista previa de datos del campo que seleccionó. Ahora puede
comparar la tabla izquierda con la derecha para ver que contienen datos coincidentes. Puede buscar
en las tablas con F para compararlas más fácilmente.
5. Introduzca un nombre para el campo clave que se creará en Nombre .
Las tablas están asociadas ahora por los dos campos que seleccionó, usando un campo clave. Esto se indica
mediante ⏵ . Haga clic en ⏵ para mostrar opciones para editar o romper la asociación.
Haga lo siguiente:
1. Desde la vista general del gestor de datos, haga clic en @ en una de las tablas que desee asociar.
Se abre el editor de tabla.
2. Seleccione Asociar en el menú de campo de uno de los campos que desee incluir en el campo de la
clave compuesta.
Se abre el editor Asociar tablas, con una vista previa del campo que ha seleccionado en la tabla
izquierda.
3. Haga clic en P para añadir los otros campos que desee incluir en el campo de la clave compuesta.
La vista previa se actualiza con los datos de la clave compuesta.
Ahora debe seleccionar con qué campos asociar éste en la tabla a mano derecha.
4. Haga clic en Seleccionar tabla y seleccione los campos que desee incluir en el campo de la clave
compuesta.
5. Haga clic en P y seleccione el campo con el que asociarlo. Debe seleccionarlos en el mismo orden
que en la tabla de la izquierda.
Para facilitar la interpretación de los datos en la clave también puede delimitar los caracteres.
La tabla a mano derecha mostrará una vista previa de datos del campo que seleccionó.
Ahora puede comparar la tabla izquierda con la derecha para ver que contienen datos coincidentes.
Puede buscar en las tablas con F para compararlas más fácilmente.
6. Introduzca un nombre para el campo clave que se creará en Nombre .
7. Haga clic en Asociar .
Las tablas están asociadas ahora por los campos que seleccionó, usando un campo de clave compuesta.
Limitaciones
Hay algunas limitaciones en cuanto al uso de claves compuestas.
Haga lo siguiente:
Se abre el editor Asociar tablas, y puede renombrar la asociación o cambiar los campos asociados.
Haga lo siguiente:
Puede añadir campos calculados para que gestionen casos como estos. Un campo calculado utiliza una
expresión para definir el resultado del campo. Puede utilizar campos, funciones y operadores en la
expresión. Solo puede remitir a campos que estén en la tabla que está editando. Puede hacer referencia a
otro campo calculado en su campo calculado.
Puede añadir y editar campos calculados en el editor de tablas del gestor de datos.
Haga lo siguiente:
Funciones de cadena
Función Descripción
Capitalize Capitalize() devuelve la cadena con todas las palabras con su letra inicial en
mayúscula.
FindOneOf FindOneOf() busca una cadena a fin de hallar la posición de cualquier carácter de
un conjunto de caracteres suministrados. Devuelve la posición de la primera vez que
aparece cualquier carácter del conjunto especificado en la búsqueda, a menos que se
suministre un tercer argumento (con un valor mayor que 1). Si no encuentra ningún
resultado, devuelve 0 .
Index Index() busca una cadena para hallar la posición de inicio de la enésima vez que
aparece una subcadena suministrada. Un tercer argumento opcional proporciona el
valor de n, el cual se considera 1 si se omite. Un valor negativo busca desde el final
de la cadena. Las posiciones en la cadena están numeradas de 1 en adelante.
KeepChar KeepChar() devuelve una cadena que consiste en la primera cadena, 'text', menos
cualquiera de los caracteres NO contenidos en la segunda cadena, "keep_chars".
Left Left() devuelve una cadena que consiste en los primeros caracteres (los situados
más a la izquierda) de la cadena introducida, donde el número de caracteres viene
determinado por el segundo argumento.
Función Descripción
Lower Lower() pone todos los caracteres de la cadena introducida en letra minúscula.
Mid Mid() devuelve la parte de la cadena de entrada que comienza en la posición del
carácter definido por el segundo argumento, 'start', y devolviendo el número de
caracteres definidos por el tercer argumento, 'count'. Si 'count' se omite, devuelve el
resto de la cadena de entrada. El primer carácter de la cadena de entrada se
enumera como 1.
Ord Ord() devuelve el número Unicode de punto de código del primer carácter de la
cadena de entrada.
PurgeChar PurgeChar() devuelve una cadena que contiene los caracteres de la cadena
introducida ('text'), menos los caracteres que aparecen en el segundo argumento
('remove_chars').
Repeat Repeat() forma una cadena que consiste en la cadena introducida, repetida el
número de veces definido por el segundo argumento.
Replace Replace() devuelve una cadena tras haber reemplazado todas las veces en que
aparece una determinada subcadena dentro de la cadena introducida por otra
subcadena. La función no es recursiva y funciona de izquierda a derecha.
Right Right() devuelve una cadena que consta de los últimos caracteres (situados más a la
derecha) de la cadena de entrada, donde el número de caracteres viene determinado
por el segundo argumento.
Trim Trim() devuelve la cadena introducida libre de todos los espacios iniciales y finales.
Upper Upper() convierte todos los caracteres de la cadena introducida en mayúscula para
todos los caracteres de texto de la expresión. Los números y símbolos se ignoran.
Las funciones están basadas en un número de serie de fecha-hora que es igual al número de días
transcurridos desde el 30 de diciembre de 1899. El valor entero representa el día, y el valor fraccional
representa la hora del día.
Qlik Sense utiliza el valor numérico del argumento, por tanto, un número es válido también como argumento
cuando no tiene formato de fecha u hora. Si el argumento no se corresponde con un valor numérico, por ej. si
fuera una cadena, entonces Qlik Sense trata de interpretar la cadena conforme a las variables de fecha y
hora del sistema operativo.
Funciones de fecha
Función Descripción
addmonths Esta función devuelve la fecha que figura n meses después de startdate o, si n
es negativa, la fecha que figura n meses antes de startdate .
addyears Esta función devuelve la fecha que aparece n años después de startdate o, si n
es negativa, la fecha que aparece n años antes de startdate .
converttolocaltime Convierte una fecha-hora UTC o GMT en la fecha y hora local como un valor
dual. El lugar puede ser cualquier ciudad, población o zona horaria del mundo.
day Esta función devuelve un entero que representa el día en que la fracción de
expression se interpreta como una fecha de acuerdo con la interpretación
numérica estándar.
dayend Esta función devuelve un valor correspondiente a una marca de tiempo (una
fecha-hora) del milisegundo final del día contenido en time . El formato de salida
predeterminado será el TimestampFormat establecido en el script.
daylightsaving Convierte una fecha-hora UTC o GMT en la fecha y hora local como un valor
dual. El lugar puede ser cualquier ciudad, población o zona horaria del mundo.
dayname Esta función devuelve un valor que muestra la fecha con un valor numérico
subyacente correspondiente a una marca de tiempo (fecha-hora) del primer
milisegundo del día que contiene a time .
Convierte una fecha-hora UTC o GMT en la fecha y hora local como un valor
daynumberofquarter dual. El lugar puede ser cualquier ciudad, población o zona horaria del mundo.
daynumberofyear Esta función calcula el número de día del año en el que cae una fecha-hora. El
cálculo se hace a partir del primer milisegundo del primer día del año, pero el
primer mes puede desplazarse.
daystart Esta función devuelve un valor correspondiente a una marca de tiempo (fecha-
hora) con el primer milisegundo del día contenido en el argumento time . El
formato de salida predeterminado será el TimestampFormat establecido en el
script.
Función Descripción
GMT Esta función devuelve la hora actual de Greenwich Mean Time, según se deriva
del reloj del sistema y las configuraciones horarias de Windows.
hour Esta función devuelve un entero que representa la hora en que la fracción de
expression se interpreta como una hora de acuerdo con la interpretación
numérica estándar.
inday Esta función devuelve True si timestamp se encuentra dentro del día que
contiene a base_timestamp .
indaytotime Esta función devuelve True si timestamp se encuentra dentro de la parte del
día que contiene a base_timestamp hasta e incluido el milisegundo exacto de
base_timestamp .
inlunarweek Esta función halla si timestamp se encuentra dentro de la semana lunar que
contiene la fecha base base_date . Las semanas lunares en Qlik Sense se
definen contando 1 de enero como el primer día de la semana.
inmonth Esta función devuelve True si timestamp se encuentra dentro del mes que
contiene a base_date .
inmonths Esta función encuentra si una indicación de fecha y hora cae dentro del mismo
mes, periodo de dos meses, trimestre, cuatrimestre o semestre dado como una
fecha base. También es posible hallar si la fecha-hora cae dentro de un periodo
de tiempo anterior o posterior.
inmonthstodate Esta función encuentra si una marca de tiempo (fecha-hora) cae dentro de la
parte del período de un mes, dos meses, tres meses, cuatro meses o medio año
hasta e incluido el último milisegundo de base_date . También es posible hallar
si la fecha-hora cae dentro de un periodo anterior o posterior.
inmonthtodate Devuelve True si date se encuentra dentro de la parte del mes que contiene a
basedate hasta e incluido el último milisegundo de basedate .
inquarter Esta función devuelve True si timestamp se encuentra dentro del trimestre que
contiene a base_date .
Función Descripción
inquartertodate Esta función devuelve True si timestamp se encuentra dentro de la parte del
trimestre que contiene a base_date hasta e incluido el último milisegundo de
base_date .
inyear Esta función devuelve True si timestamp se encuentra dentro del año que
contiene a base_date .
inyeartodate Esta función devuelve True si timestamp se encuentra dentro de la parte del
año que contiene a base_date hasta e incluido el último milisegundo de
base_date .
localtime Esta función devuelve una fecha y hora con la hora actual según el reloj del
sistema y una determinada zona horaria.
lunarweekname Esta función devuelve un valor de visualización que muestra el año y el número
de la semana lunar correspondiente a una marca de tiempo (fecha-hora) del
primer milisegundo del primer día de la semana lunar que contiene a date . Las
semanas lunares en Qlik Sense se definen contando 1 de enero como el primer
día de la semana.
lunarweekstart Esta función devuelve un valor correspondiente a una marca de tiempo (fecha-
hora) del primer milisegundo de la semana lunar que contiene a date . Las
semanas lunares en Qlik Sense se definen contando 1 de enero como el primer
día de la semana.
makedate Esta función devuelve una fecha calculada a partir del año YYYY, el mes MM y
el día DD.
maketime Esta función devuelve una hora calculada a partir de la hora hh , el minuto mm y
el segundo ss.
Función Descripción
makeweekdate Esta función devuelve una fecha calculada a partir del año YYYY, la semana
WW y el día de la semana D.
minute Esta función devuelve un entero que representa el minuto en que la fracción de
la expression se interpreta como una hora de acuerdo con la interpretación
numérica estándar.
month Esta función devuelve un valor dual: un nombre de mes tal como se define en la
variable de entorno MonthNames y un entero entre 1-12. El mes se calcula a
partir de la interpretación de la fecha de la expresión, conforme a la
interpretación numérica estándar.
monthend Esta función devuelve un valor correspondiente a una marca de tiempo (fecha-
hora) del último milisegundo del último día del mes que contiene a date . El
formato de salida predeterminado será el DateFormat establecido en el script.
monthname Esta función devuelve un valor de visualización que muestra el mes (con
formato de acuerdo con la variable de script MonthNames) y el año con un
valor numérico subyacente correspondiente a una marca de tiempo (fecha-hora)
del primer milisegundo del primer día del mes.
monthsend Esta función devuelve un valor correspondiente a una fecha y hora con el último
milisegundo del mes, periodo de dos meses, trimestre, cuatrimestre o semestre
que engloba la fecha base. También es posible hallar la fecha-hora de un
periodo anterior o posterior.
monthsname Esta función devuelve un valor de visualización que representa el rango de los
meses del período (con formato de acuerdo con la variable de script
MonthNames), así como el año. El valor numérico subyacente corresponde a
la fecha y hora del primer milisegundo del mes, periodo de dos meses,
trimestre, cuatrimestre o semestre que contiene la fecha base.
monthsstart Esta función devuelve un valor correspondiente a la fecha y hora del primer
milisegundo del mes, periodo de dos meses, trimestre, cuatrimestre o semestre
que contiene la fecha base. También es posible hallar la fecha-hora de un
periodo anterior o posterior.
monthstart Esta función devuelve un valor correspondiente a una marca de tiempo (fecha-
hora) del primer milisegundo del primer día del mes que contiene a date . El
formato de salida predeterminado será el DateFormat establecido en el script.
now Esta función devuelve una fecha-hora con la hora actual según el reloj del
sistema. El valor predeterminado es 1.
Función Descripción
quarterend Esta función devuelve un valor correspondiente a una marca de tiempo del
último milisegundo del trimestre que contiene a date . El formato de salida
predeterminado será el DateFormat establecido en el script.
quartername Esta función devuelve un valor de visualización que muestra los meses del
trimestre (con formato conforme a la variable de script MonthNames) y el año
con un valor numérico subyacente correspondiente a una marca de tiempo (una
fecha-hora) del primer milisegundo del primer día del trimestre.
quarterstart Esta función devuelve un valor correspondiente a una marca de tiempo con el
primer milisegundo del trimestre que contiene a date . El formato de salida
predeterminado será el DateFormat establecido en el script.
second Esta función devuelve un entero que representa el segundo en que la fracción
de expression se interpreta como una hora de acuerdo con la interpretación
numérica estándar.
timezone Esta función devuelve el nombre de la zona horaria actual, como se define en
Windows.
today Esta función devuelve la fecha actual según el reloj del sistema.
week Esta función devuelve un entero que representa el número de semana conforme
a la ISO 8601. El número de semana se calcula a partir de la interpretación de
la fecha de la expresión, conforme a la interpretación numérica estándar.
weekday Esta función devuelve un valor dual con lo siguiente: Un nombre de día tal como
se define en la variable de entorno DayNames. Un número entero entre 0 y 6
correspondiente al día nominal de la semana (0-6).
weekend Esta función devuelve un valor correspondiente a una marca de tiempo (fecha-
hora) del último milisegundo del último día (domingo) de la semana del
calendario que contiene a date . El formato de salida predeterminado será el
formato de fecha DateFormat definido en el script.
weekname Esta función devuelve un valor que muestra el número de año y de semana con
un valor numérico subyacente correspondiente a una marca de tiempo del
primer milisegundo del primer día de la semana que contiene a date .
weekstart Esta función devuelve un valor correspondiente a una marca de tiempo del
primer milisegundo del primer día (lunes) de la semana de calendario que
contiene a date . El formato de salida predefinido es el DateFormat definido en
el script.
weekyear Esta función devuelve el año al que pertenece el número de semana conforme a
la ISO 8601. El número de semana varía entre 1 y 52 aproximadamente.
year Esta función devuelve un entero que representa el año en que expression se
interpreta como una fecha de acuerdo con la interpretación numérica estándar.
Función Descripción
yearend Esta función devuelve un valor correspondiente a una marca de tiempo del
último milisegundo del último día del año que contiene a date . El formato de
salida predeterminado será el DateFormat definido en el script.
yearname Esta función devuelve un año de cuatro dígitos como valor de visualización con
un valor numérico subyacente correspondiente a una marca de tiempo (fecha-
hora) del primer milisegundo del primer día del año que contiene date .
yearstart Esta función devuelve una marca de tiempo correspondiente al inicio del primer
día del año que contiene a date . El formato de salida predefinido será el
DateFormat definido en el script.
Por ejemplo, vea las diferencias en los datos de salida entre las funciones Date y Date# .
Estas funciones son útiles cuando sus datos contienen campos de fecha que no se interpretan como fechas
puesto que el formato no se corresponde con el formato de fecha establecido en Qlik Sense. En este caso,
puede resultar útil anidar las funciones:
Date(Date#(DateInput, 'YYYYMMDD'),'YYYY.MM.DD')
Esto interpretará el campo DateInput de acuerdo con el formato de entrada, YYYYMMDD, y lo devolverá en
el formato que desee utilizar, YYYY.MM.DD.
Date Date() da formato a una expresión como una fecha utilizando el formato establecido en
las variables de sistema del script de carga de datos, o en el sistema operativo, o en una
cadena de formato, si se proporciona.
Función Descripción
Date# Date# devuelve una expresión como una fecha en el formato especificado en el segundo
argumento, si se proporciona este.
Dual Dual() combina un número y una cadena en un solo registro, de manera que la
representación numérica del registro se puede utilizar con fines de ordenación y cálculo,
mientras que el valor de la cadena se puede usar para fines de visualización.
Interval# Interval#() devuelve una expresión de texto como un intervalo de tiempo en el formato
establecido por defecto en el sistema operativo, o en el formato especificado en el
segundo argumento, si se proporciona este.
Money Money() da formato numérico a una expresión con el valor de moneda, en el formato
numérico establecido en las variables de sistema del script de carga de datos o en el
sistema operativo, a menos que se suministre una cadena de formato y, opcionalmente,
unos separadores decimal y de miles.
Money# Money#() convierte una cadena de texto en un valor de moneda, en el formato definido
en el script de carga o el sistema operativo, a menos que se suministre una cadena de
formato. Los símbolos de separador decimal o de miles personalizados son parámetros
opcionales.
Num# Num#() convierte una cadena de texto en un valor numérico, en el formato numérico
establecido en el script de carga de datos o el sistema operativo. Los símbolos de
separador decimal o de miles personalizados son parámetros opcionales.
Text Text() obliga a que la expresión se trate como texto, incluso si es posible una
interpretación numérica.
Time Time() da formato a una expresión como un valor de hora, en el formato de tiempo
definido en las variables de sistema del script de carga de datos, o en el sistema
operativo, a menos que se suministre una cadena de formato.
Time# Time#() evalúa una expresión como un valor de tiempo, en el formato de tiempo
establecido en el script de carga de datos o en el sistema operativo, a menos que se
proporcione una cadena de formato.
Timestamp TimeStamp() da formato a una expresión como un valor de fecha y hora, en el formato
de tiempo definido en las variables de sistema del script de carga de datos, o el sistema
operativo, a menos que se proporcione una cadena de formato.
Función Descripción
Funciones numéricas
Función Descripción
ceil Ceil() redondea un número hacia arriba, hacia el múltiplo más cercano de step desplazado
por el número offset .
div Div() devuelve la parte entera de la división aritmética del primer argumento por el segundo
argumento. Ambos parámetros se interpretan como números reales, esto es, no tienen que
ser enteros.
evens Even() devuelve True (-1), si integer_number es un entero par o cero. Devuelve False (0), si
integer_number es un entero impar y NULL si integer_number no es un entero.
floor Floor() redondea un número hacia abajo, hacia el múltiplo más cercano de step desplazado
por el número offset .
fmod fmod() es una función de módulo generalizada que devuelve la parte restante de la división
entera del primer argumento (el dividendo) por el segundo argumento (el divisor). El resultado
es un número real. Ambos argumentos se interpretan como números reales, esto es, no
tienen que ser enteros.
mod Mod() es una función matemática de módulo que devuelve el resto no negativo de una
división de un entero. El primer argumento es el dividendo y el segundo argumento es el
divisor. Ambos argumentos deben ser valores enteros.
odd Odd() devuelve True (-1), si integer_number es un entero impar o cero. Devuelve False (0),
si integer_number es un entero par, y NULL si integer_number no es un entero.
round Round() devuelve el resultado de redondear un número hacia arriba o hacia abajo al múltiplo
más cercano de step desplazado por el número offset .
Funciones condicionales
Función Descripción
alt La función alt devuelve el primero de los parámetros que tiene una representación numérica
válida. Si no se encuentra tal condición, devolverá el último parámetro. Se puede utilizar
cualquier número de parámetros.
match La función match compara el primer parámetro con todos los siguientes y devuelve la
ubicación numérica del número de expresiones que coinciden. La comparación es sensible a
mayúsculas.
mixmatch La función mixmatch compara el primer parámetro con todos los siguientes y devuelve la
ubicación numérica de las expresiones que coinciden. La comparación no es sensible a
mayúsculas.
La función wildmatch compara el primer parámetro con todos los siguientes y devuelve el
wildmatch número de la expresión que coincida. Permite el uso de los caracteres comodín ( * y ? ) en
las cadenas de comparación. * es cualquier secuencia de caracteres. ? es un único carácter.
La comparación no es sensible a mayúsculas.
Funciones NULL
Función Descripción
IsNull La función IsNull comprueba si el valor de una expresión es NULL y, si lo es, devuelve -1
(True), de lo contrario, devuelve 0 (False).
Funciones matemáticas
Función Descripción
rand La función devuelve un número aleatorio entre 0 y 1. Esto se puede usar para crear datos de
muestra.
exp La función exponencial natural, e^x, usando el logaritmo natural e como base. El resultado es
un número positivo.
log10 El logaritmo común (base 10) de x. La función solo se define si x> 0. El resultado es un
número.
sqrt Raíz cuadrada de x. La función solo se define si x >= 0. El resultado es un número positivo.
Funciones de distribución
Función Descripción
Funciones geoespaciales
Función Descripción
Funciones de color
Función Descripción
ARGB ARGB() se utiliza en expresiones para fijar o evaluar las propiedades de color de un objeto
gráfico, donde el color viene definido por un componente de rojo r , un componente de verde g
y un componente de azul b , con un factor alfa (opacidad) de alpha .
HSL HSL() se utiliza en las expresiones para fijar o evaluar las propiedades de color de un objeto
gráfico, donde el color se define mediante los valores de hue , saturation y luminosity entre 0
y 1.
RGB RGB() se utiliza en las expresiones para fijar o evaluar las propiedades de color de un objeto
gráfico, donde el color viene definido por un componente de rojo r , un componente de verde g
y un componente de azul b con valores entre 0 y 255.
Funciones lógicas
Función Descripción
IsText Devuelve -1 (True) si la expresión tiene una representación de texto, de lo contrario devuelve 0
(False).
Funciones del sistema que se pueden utilizar en una expresión de campo calculada
Puede usar estas funciones para acceder a las propiedades del sistema, del dispositivo y de la app de Qlik
Sense.
Funciones de sistema
Función Descripción
OSUser Esta función devuelve una cadena que contiene el nombre del usuario actualmente
conectado. Puede utilizarse tanto en el script de carga de datos como en una expresión
de gráficos.
Función Descripción
Esta función devuelve una fecha-hora indicando el momento en que finalizó la última
ReloadTime carga de datos. Puede utilizarse tanto en el script de carga de datos como en una
expresión de gráficos.
l ⏪ General
l G Fecha
l õ Fecha-hora
l , Geodatos
Si los datos no se interpretaron de la forma correcta, puede definir el tipo de campo. También puede cambiar
el formato de entrada y presentación de un campo de datos o de fecha-hora.
Para abrir el editor de tabla, haga clic en @ en la tabla de datos que desee editar.
Haga lo siguiente:
4. Si desea utilizar un formato de presentación distinto del formato predefinido en su app, escriba o
seleccione una cadena de formato en Formato de presentación .
Si lo deja vacío, se utilizará el formato de presentación predefinido en la app.
Haga lo siguiente:
Haga lo siguiente:
Cuando el usuario, o bien Qlik Sense de forma automática, asignan un campo al tipo de campo Geodatos,
se le asocia un campo que contiene coordenadas geográficas, ya sean datos de puntos o polígonos. Los
campos asociados que contienen las coordenadas están visibles en el Visor del modelo de datos. Estas
coordenadas son necesarias para apps que utilicen objetos de Mapa .
Los campos que contienen información geográfica en forma de nombres o códigos, como por ejemplo los
códigos postales, no pueden utilizarse para la correspondencia (o mapeado) a menos que se designen como
campos de Geodatos.
Los campos asignados al tipo Geodatos siguen conteniendo valores de cadena, como México y MX, pero
cuando se usan en un objeto de Mapa , las coordenadas de mapa provienen de los campos que contienen los
datos de puntos o polígonos.
Al ocultar un campo, se mantendrán todas las relaciones existentes que tenga el campo, como asociaciones
o uso en cálculos. Si un campo está actualmente en uso, por ej. en un elemento maestro o en un gráfico,
seguirá estando disponible ahí, pero no estará disponible para su uso en nuevos elementos maestros o
visualizaciones hasta que se muestre de nuevo.
Puede ver todos sus campos ocultos del Gestor de datos dirigiéndose al Editor de carga de
datos y abriendo la sección autogenerada. Todos los campos ocultos se mostrarán como TAG
FIELD <nombre campo>. WITH '$hidden';
El campo ahora está oculto en la vista de hoja y en Conocimientos. Los campos ocultos tienen un signo †
encima de la cabecera del campo.
El campo ahora está disponible en la vista de hoja y en Conocimientos. El † sobre la cabecera del campo
se eliminará.
ejemplo, ver los datos del campo como una dimensión o medida.
Al panel Resumen se accede editando una tabla en el Gestor de datos y seleccionando un campo de
tabla. Cuando se selecciona un campo en el editor de tablas, Qlik Sense examina el tipo de datos, los
metadatos y los valores presentes. El campo se clasifica entonces como una dimensión, una medida o un
campo temporal, y se presenta un análisis en el panel Resumen . Los campos cuyos datos se puedan
clasificar como una dimensión o medida pueden cambiar la vista previa para mostrarlos como una dimensión
o medida. El modo en que se clasifica un campo de datos en el panel Resumen no afecta a cómo se puede
utilizar en las visualizaciones de Qlik Sense, sino que determina qué opciones de transformación están
disponibles para el campo de datos en otros paneles de perfiles de datos.
l Valores nulos: El número de valores nulos en los datos. Esta visualización solo muestra si hay
valores nulos en el campo.
l Valores mixtos:El número de valores de texto en un campo que contiene valores de texto y
numéricos. Esta visualización solo muestra si hay valores mixtos en el campo.
Dependiendo de cómo se clasifique un campo en el panel Resumen , se puede modificar en otros paneles
de perfiles de datos. Los campos configurados como medidas pueden tener valores agrupados creados
desde el campo utilizando el panel Cubo . Para más información, vea Agrupar datos de medidas en rangos
(page 84).
Haga lo siguiente:
Puede establecer valores de reemplazo en campos que contengan hasta un máximo de 5.000 valores
distintos.
Además, los campos calculados ignoran los valores de reemplazo y usarán los valores originales en su lugar.
Reemplazar valores
Haga lo siguiente:
Haga lo siguiente:
Si desea utilizar un valor específico como su valor nulo, puede reemplazar el valor nulo predeterminado, -
(Null) , usando el panel Reemplazar . Para más información, vea Reemplazar valores de campo en una
tabla (page 77).
Puede establecer valores de campo como nulos en campos que contengan hasta un máximo de 5.000
valores distintos.
El panel Definir nulos se compone de dos secciones: Valores distintos y Valores nulos fijados
manualmente . Cuando se seleccionan valores de Valores distintos, estos se agregan a Valores nulos
fijados manualmente . Cuando se aplican los valores nulos, todas las instancias de los valores
seleccionados se configuran como nulos en los datos del campo. Puede restaurar valores individuales o
todos los valores definidos como nulos.
El panel Orden consta de dos secciones: Orden actual y Vista previa del orden . Orden actual muestra
todos los valores distintos de la dimensión. De forma predeterminada, los valores distintos se organizan por
orden de carga. Puede configurar su orden personalizado arrastrando los valores de Orden actual al orden
que desee. La Vista previa del orden es un gráfico de barras que muestra un recuento de valores de cada
valor distinto, organizado por el orden actual.
Un orden personalizado anula cualquier otra opción de clasificación disponible en las visualizaciones de Qlik
Sense, excepto para ordenar por orden de carga. Si necesita un orden alfabético o numérico para este
campo, debe eliminar el orden personalizado restableciendo el orden.
Cancelar solo está disponible para nuevos órdenes personalizados. Para cancelar los
cambios, si está cambiando el orden de valores de un determinado orden personalizado
existente, seleccione un campo distinto de la tabla y después vuelva a seleccionar este
campo de nuevo.
Los campos de tabla que contienen información de fecha y hora se dividen automáticamente
en campos de fecha cuando sus tablas se preparan en el Gestor de datos y no requieren el
panel Dividir.
El panel Dividir consta de un campo de entrada que contiene un valor de plantilla y una vista previa de los
nuevos campos con sus valores. De forma predeterminada, el valor de la plantilla es el primer valor por orden
numérico de un campo, pero puede seleccionar otros valores del campo de origen para utilizarlos como
plantilla. Debe seleccionar un valor que sea representativo de todos los valores de la tabla. La división
utilizando un valor atípico como plantilla puede afectar a la calidad de los nuevos campos.
Los campos se dividen insertando marcadores de división en el valor de plantilla en el que desee dividir el
campo. Los marcadores de división se añaden seleccionando un punto en el campo de muestra al que se
desee agregar un marcador dividido, ajustando su selección y después seleccionando dividir por instancia o
posición. El panel Dividir puede agregar automáticamente los marcadores de división recomendados a su
valor de plantilla.
Las instancias son ejemplos de un delimitador seleccionado, como el carácter @ o un espacio entre
palabras. Las posiciones de los marcadores de división de instancias son relativas a uno de los siguientes:
Si elimina la instancia a la que se refiere otra instancia, la posición de la otra instancia se ajusta a la misma
posición con respecto a la siguiente instancia de un conjunto delimitador diferente como marcador de división
o el inicio del valor. Puede dividir un campo hasta en 9 delimitadores.
La tarjeta Dividir divide los valores utilizando los caracteres especificados como marcadores
de división. Si los datos presentan variaciones en la forma de estos caracteres, como por
ejemplo caracteres acentuados, estas diferencias no se incluirán en la división.
Las posiciones son ubicaciones en el valor de campo, por ejemplo, tras los primeros cuatro caracteres. Las
posiciones son relativas a uno de los siguientes:
Si ha eliminado una instancia que tiene una posición a su derecha, la posición se mueve a la misma posición
con respecto al inicio del valor o al primer marcador de división de la instancia a la izquierda o al inicio del
valor.
La vista previa del campo se actualiza a medida que agrega marcadores de división, mostrando los nuevos
campos y sus datos. Puede cambiar el nombre de los nuevos campos en la vista previa del campo. También
puede seleccionar incluir o excluir los campos divididos de su tabla antes de aplicar la división. Cuando
aplique una división, los campos seleccionados en la vista previa de campo se agregan a su tabla.
Puede cambiar el valor de muestra que se muestra en el campo de entrada haciendo clic en S
y seleccionando un valor diferente.
Haga lo siguiente:
1. En el panel de División , haga clic en la posición del valor de muestra en el que desee agregar
marcadores de división.
Al hacer clic, se selecciona todo el valor de la plantilla hasta cualquier otro marcador de división.
Al hacer doble clic, se selecciona el punto de inserción del cursor en el valor de la plantilla.
2. Ajuste su selección haciendo clic y arrastrando las pestañas de selección o resaltando la sección que
desee seleccionar.
3. Haga clic en el botón que corresponde al tipo de división que desea aplicar:
l Esta instancia : El campo se divide por la instancia seleccionada del delimitador.
l Todas las instancias: El campo se divide por todas las instancias del delimitador.
l Estas posiciones:El campo se divide en cualquiera de ambos lados de la selección.
l Esta posición : El campo se divide en esta posición.
Haga lo siguiente:
l En el panel Dividir , en la vista previa del campo, realice una de las siguientes acciones:
l Para incluir un campo, seleccione la casilla de verificación de la columna de campo.
l Para excluir un campo, desactive la casilla de verificación de la columna de campo.
l En el panel Dividir , en un encabezado de campo en la vista previa del campo, introduzca un nuevo
nombre de campo.
Los campos cubo creados con el panel Cubo se clasifican como dimensiones en el panel
Resumen. Sin embargo, no se puede aplicar un orden personalizado a los campos cubo
usando el panel Orden. Los campos cubo no se pueden utilizar en campos calculados.
El panel Cubo ofrece un número sugerido de agrupaciones, una vista previa de los agrupamientos y una
barra deslizante que contiene sus agrupaciones y que permite modificar el nombre de cada cubo y el rango
de valores. Puede modificar el número sugerido de agrupaciones introduciendo un nuevo número en el
campo Cubo . Qlik Sense admite un máximo de 20 cubos y un mínimo de 2 cubos. Los nuevos cubos se
añaden a la derecha de su rango de cubos, mientras que los cubos se eliminan de derecha a izquierda. Si no
ha modificado ningún cubo individual, el rango de cada cubo se ajusta para que se adapte de forma uniforme
al rango de valores del campo. Si cambia el número de cubos después de haber modificado un cubo
individual, se añaden nuevos cubos a la derecha de su rango de cubo y se les asigna un rango de valores
igual al tamaño del segundo cubo situado más a la derecha.
El gráfico de barras Vista previa de los cubos de datos muestra una panorámica de los datos que hay en
los cubos, con un recuento del número de valores distintos en cada cubo. El gráfico se va actualizando a
medida que cambia sus cubos. Si un cubo no contiene ningún valor, no habrá una barra en el gráfico.
La barra deslizante Cubo le permite editar sus cubos. Al hacer clic en un segmento de cubo, puede definir el
rango de dicho cubo, cambiar el nombre del cubo o eliminar el cubo por completo. Colocar el cursor sobre el
cubo muestra el nombre y el rango de valores del cubo. De forma predeterminada, los cubos se denominan
conforme al rango de valores del cubo expresado como una notación de intervalo. Los rangos de los cubos
incluyen valores entre el valor inicial y hasta, pero sin incluirlo, el valor final.
Al ajustar el rango de valores de un solo cubo, Qlik Sense cambia los valores de todos los cubos, asegurando
que no haya lagunas y solapamientos y respetando al mismo tiempo lo más posible los rangos cuantitativos
de los otros cubos. El cubo situado más a la izquierda nunca tiene límite inferior y el cubo situado más a la
derecha nunca tiene límite superior. Esto les permite capturar cualquier valor que pueda caer fuera de los
rangos establecidos en todos sus cubos. La modificación del rango inferior de un cubo alterará los rangos de
los cubos situados a la derecha, la modificación del rango superior de un cubo modificará los cubos situados
a la izquierda.
Cuando se crean cubos desde un campo, se genera un nuevo campo que contiene todos los cubos asignados
a las filas con sus correspondientes valores de medida del campo de origen. De forma predeterminada, se
llamará <field> (En cubos). Este campo puede renombrarse, asociarse, ordenarse y eliminarse, como otros
campos de tabla. Puede editar el esquema de cubo en el campo de cubo generado seleccionando el campo
de la tabla y modificando las opciones de cubos. Puede crear varios campos de cubo desde el mismo campo
de medida de origen.
Haga lo siguiente:
Modificar un cubo
Puede cambiar el nombre de un cubo, ajustar el rango de valores de un cubo o eliminar un cubo.
Si está modificando cubos, se recomienda modificar los cubos por orden, desde el segmento
de cubo situado más a la izquierda hasta el segmento de cubo situado más a la derecha.
Si está tratando de usar valores decimales, debe introducirlos manualmente en los campos
Desde y Hasta.
Haga lo siguiente:
Eliminar un cubo
Haga lo siguiente:
Haga lo siguiente:
Despivotar datos cargados en formato de tabla cruzada traslada partes de la misma a filas.
Crosstab
Year Jan Feb Mar Apr May Jun
2008 45 65 78 12 78 22
2009 11 23 22 22 45 85
2010 65 56 22 79 12 56
2011 45 24 32 78 55 15
2012 45 56 35 78 68 82
Si esta tabla simplemente se carga en Qlik Sense el resultado será una tabla con un campo por Year y otro
campo por cada uno de los meses. Por regla general, éste no es el resultado que interesa. Probablemente
preferiríamos tener tres campos generados:
l El campo cualificador, en este caso Year, marcado con verde en la tabla superior.
l El campo de atributo, en este caso representado por los nombres de mes Jan - Jun marcados con
amarillo. Este campo se puede denominar de forma adecuada Month.
l El campo de datos, marcado en azul. En este caso representan datos de ventas, por lo que pueden
nombrarse Sales de forma adecuada.
Esto se puede lograr usando la opción Despivotar en el editor de tablas del gestor de datos y seleccionando
los campos Jan - Jun. Esto crea la tabla siguiente:
Tabla despivotada
Year Month Sales
2008 Ene 45
2008 Feb 65
2008 Mar 78
2008 Abr 12
2008 May 78
2008 Jun 22
2009 Ene 11
2009 Feb 23
Ahora ha despivotado la tabla cruzada a un formato plano, lo que hará que sea más fácil de asociar a otros
datos en la app.
Si necesita un control más granular sobre qué datos se incluyen en las tablas combinadas, consulte Unir
tablas en el Gestor de datos (page 93) para obtener más información sobre las operaciones de unión
mediante Join .
l La concatenación forzada requiere que al menos un campo de cada tabla se incluya en la tabla
concatenada, aunque no es necesario asociarlos (mapearlos).
l Los campos de fecha no pueden formatearse tras la concatenación. Los campos de fecha deben
tener el mismo formato aplicado a todos antes de la concatenación. Los campos de fecha
concatenados utilizan el formato de hora predeterminado configurado con DateFormat en el Editor
de carga de datos.
l No se pueden cambiar las categorías de campos tras la concatenación.
l Los campos calculados que hacen referencia a un campo asociado con otro campo en una tabla
concatenada solo contendrán datos para el campo original en lugar de los datos combinados en el
campo concatenado. Los campos calculados creados después de concatenar dos tablas que se
refieren a un campo de la tabla concatenada utilizarán todos los datos de ese campo.
l No puede añadir ni eliminar datos de una tabla concatenada con Seleccionar datos de fuente . Sí
puede, no obstante, eliminar campos haciendo clic en Añadir datos, seleccionando la tabla de
origen y, a continuación, excluyendo los campos. Se agregan valores nulos para los datos del campo
eliminado.
Al panel de Concatenar o unir tablas se accede haciendo clic en ¥ en el Gestor de archivos, haciendo
clic en Concatenar o unir , y seleccionando dos tablas. Cuando se seleccionan tablas en Concatenar o
unir tablas, Qlik Sense analiza los campos y automáticamente asocia todos los campos que coincidan. Si
no hay correspondencias claras, los campos quedan sin asociar. Cuando se aplica la concatenación, los
campos asociados se combinan en la tabla concatenada, mientras que los campos no asociados se incluyen
como campos individuales con valores nulos para las filas donde no hay ningún valor correspondiente.
La primera tabla seleccionada en Concatenar o unir tablas se define como la tabla principal, la tabla a la
que se concatena la otra tabla. La tabla concatenada utiliza los nombres de tabla y campo de la tabla
principal, a menos que se modifique su nombre manualmente. Puede cambiar qué tabla es la tabla principal
con el botón ♫ . Concatenar o unir tablas organiza los campos en dos filas, con los campos de la tabla
principal en la fila superior y los campos de la tabla secundaria en la fila inferior. Puede intercambiar las
tablas primarias y secundarias con el botón ♫ .
Puede utilizar Editar correspondencias para cambiar la asociación predeterminada y seleccionar qué
campos asociar, dejar sin asociar o excluir de la tabla concatenada. Editar correspondencias contiene una
interfaz de arrastrar y soltar para editar asociaciones y el panel Campos, que enumera todos los campos de
tabla. Los campos se pueden asociar arrastrándolos debajo de un campo de la tabla principal. Se pueden
agregar campos como un nuevo campo sin asignar mediante ∑ al lado del campo en el panel Campos o
arrastrándolos a la fila superior de campos. Los campos sin asignar van marcados con ù en el panel
Campos. Los campos eliminados de la tabla concatenada no se incluyen en la tabla y no están disponibles
para su uso en Qlik Sense después de haber aplicado la concatenación a la tabla.
Una vez que se apliquen las correspondencias o asociaciones y se concatenen las tablas, estas no se pueden
editar, pero se pueden eliminar de las tablas mediante la división de la tabla concatenada, lo cual restaura
las tablas a su estado original.
1. En el panel Concatenar o unir tablas, en el campo de nombre de tabla, escriba un nuevo nombre
de tabla.
2. En un campo de nombre de campo, escriba un nuevo nombre de campo.
Concatenar tablas
Haga lo siguiente:
Dividir una tabla concatenada eliminará cualquier asociación que la tabla concatenada tenía,
así como cualquier asociación que las tablas primaria y secundaria tenían entre sí. Si desea
conservar sus asociaciones mientras divide las tablas concatenadas, haga clic en B para
deshacer la concatenación en lugar de dividir la tabla. No puede usar B para deshacer la
concatenación tras haber cargado los datos en el Gestor de datos.
La tabla se divide ahora en sus tablas de origen y todos los campos de las tablas de origen están calificados.
Los campos calificados se renombran con el nombre de la tabla seguido del nombre del campo, separados
por un signo de puntuación (el carácter ".").
Example:
Table1 y Table2 ambas contienen los campos Field1 y Field2. Cuando las añade en el Gestor de datos, se
concatenan con una tabla denominada Table1-Table2 con los mismos campos, Field1 y Field2.
La tabla se ha dividido ahora en sus tablas de origen. Todos los campos de las tablas de origen y sus campos
tienen los nombres que tenían antes de la concatenación. Dividir una tabla concatenada solo divide un nivel
de concatenación, de modo que cualquier tabla concatenada que formara parte de la tabla concatenada
dividida conservará su propia concatenación.
La operación Join toma dos tablas y las combina en una, que será una combinación de los campos de
ambas tablas originales, en función de la superposición de un valor común para uno o varios campos
comunes. Existen varios operadores que se pueden aplicar a las operaciones de unión Join : Outer , Inner ,
Left y Right.
Una tabla unida sigue ocupando la misma cantidad de memoria que las tablas combinadas en
ella. El uso excesivo de tablas unidas puede hacer que Qlik Sense se ralentice. No se podrá
acceder a la información que está excluida mediante una operación de unión de Qlik Sense
hasta que se divida la tabla.
Operadores de unión
Hay cuatro operadores de unión: Outer join , Inner join , Left join y Right join . El operador seleccionado
determina qué campos o valores superpuestos se incluyen o excluyen.
Cuando los operadores de unión se refieren a las tablas Izquierda y Derecha, se están
refiriendo a las tablas primera y segunda respectivamente, por orden de selección.
Outer join
El operador Outer join contiene todas las combinaciones posibles de valores de las dos tablas, si los valores
de campo superpuestos están representados en una o ambas tablas.
Example:
First table
A B
1 aa
2 cc
3 ee
Second table
A C
1 xx
4 yy
Tabla unida
A B C
1 aa xx
2 cc
3 ee
4 yy
Inner join
El operador Inner join solo contiene combinaciones de valores de las dos tablas, si los valores de campo
superpuestos están representados en ambas tablas.
Example:
First table
A B
1 aa
2 cc
3 ee
Second table
A C
1 xx
4 yy
Joined table
A B C
1 aa xx
Left join
El operador Left join contiene combinaciones de valores de las dos tablas, si los valores de campo
superpuestos están representados en la primera tabla.
Example:
First table
A B
1 aa
2 cc
3 ee
Right table
A C
1 xx
4 yy
Joined table
A B C
1 aa xx
2 cc
3 ee
Right join
El operador Right join contiene combinaciones de valores de las dos tablas, si los valores de campo
superpuestos están representados en la segunda tabla.
Example:
First table
A B
1 aa
2 cc
3 ee
Second table
A C
1 xx
4 yy
Joined table
A B C
1 aa xx
4 yy
Unir tablas
Al panel Concatenar o unir tablas se accede haciendo clic en ¥ en el Gestor de archivos, haciendo clic
en Concatenar o unir y seleccionando dos tablas. Cuando se seleccionan tablas en Concatenar o unir
tablas, Qlik Sense analiza los campos y automáticamente asocia todos los campos que coincidan. Si no hay
correspondencias claras, los campos quedan sin asociar. Cuando se aplica la unión, los campos asignados
se combinan en la tabla unida. Los campos no asignados se incluyen como campos individuales con valores
nulos para las filas donde no hay un valor correspondiente, o se excluyen por completo si no hay instancias
superpuestas del valor.
La primera tabla seleccionada en Concatenar o unir tablas se configura como la tabla principal, la tabla a
la que se une la otra tabla. La tabla unida utiliza la tabla y los nombres de campos de la tabla principal, a
menos que se modifiquen sus nombres manualmente. Puede cambiar qué tabla es la tabla principal con el
botón ♫ . Concatenar o unir tablas organiza los campos en dos filas, con los campos de la tabla principal
en la fila superior y los campos de la tabla secundaria en la fila inferior. Puede intercambiar las tablas
primarias y secundarias con el botón ♫ .
Puede utilizar Editar correspondencias para cambiar la asociación predeterminada y seleccionar qué
campos asociar, dejar sin asociar o excluir de la tabla unida. Editar correspondencias contiene una
interfaz de arrastrar y soltar para editar asociaciones y el panel Campos, que enumera todos los campos de
tabla. Los campos se pueden asociar arrastrándolos debajo de un campo de la tabla principal. Se pueden
agregar campos como un nuevo campo sin asignar mediante ∑ al lado del campo en el panel Campos o
arrastrándolos a la fila superior de campos. Los campos sin asignar van marcados con ù en el panel
Campos. Los campos eliminados de la tabla unida no se incluyen en la tabla y no están disponibles para su
uso en Qlik Sense después de haber aplicado la unión a la tabla.
Una vez que se apliquen las correspondencias o asociaciones y se unan las tablas, ya no se podrán editar las
correspondencias, pero sí se podrán eliminar de las tablas mediante la división de la tabla unida, lo cual
restaura las tablas a su estado original.
1. En el panel Concatenar o unir tablas, en el campo de nombre de tabla, escriba un nuevo nombre
de tabla.
2. En un campo de nombre de campo, escriba un nuevo nombre de campo.
Editar correspondencias
Haga lo siguiente:
Unir tablas
Haga lo siguiente:
Dividir una tabla unida eliminará cualquier asociación que tenía la tabla unida, así como
cualquier asociación que las tablas primaria y secundaria tenían entre sí. Si desea conservar
las asociaciones mientras divide las tablas unidas, haga clic en B para deshacer la unión en
lugar de dividir la tabla. No puede usar B para deshacer uniones tras haber cargado los datos
en el Gestor de datos.
La tabla se ha dividido ahora en sus tablas de origen. Todos los campos de las tablas de origen y sus campos
tienen los nombres que tenían antes de la unión. Dividir una tabla unida solo divide un nivel de unión, de
modo que cualquier tabla unida que formara parte de la tabla unida dividida conservará su propia unión.
Detalles muestra las operaciones y las transformaciones actuales realizadas en la tabla o campo
seleccionado, en el orden en que se aplican en el script de carga de datos generado. Esto le permite ver con
facilidad el origen de una tabla o campo, los cambios actuales que se han realizado y la secuencia en la que
se han aplicado los cambios. Puede usar Detalles, por ejemplo, para ver fácilmente qué tablas se
concatenaron o si se cambió el orden de un campo.
La información que se muestra en Detalles varía según se esté viendo una tabla o un campo. Detalles de
tabla muestra:
l En el Gestor de datos, seleccione una tabla, haga clic en ¥ y clic en Ver detalles.
La concatenación forzada se puede usar para limpiar los datos antes de usarlos para el análisis en una hoja.
Puede concatenar dos tablas en una tabla. También puede agregar otra tabla más adelante, por ejemplo, si
inicialmente agrega una tabla de junio, y luego desea agregar una segunda tabla a partir de julio.
La concatenación de un vistazo
l Las tablas se concatenan automáticamente en el Gestor de datos cuando Qlik Sense detecta que una
o más tablas agregadas tienen ambas el mismo número de campos y nombres de campo idénticos a
los de otra tabla. En este caso, puede dividir las tablas si es necesario.
l Se puede obligar a concatenar dos tablas cuando las tablas no comparten por completo los mismos
campos o datos. Solo se puede obligar a concatenar dos tablas. Para concatenar tres tablas, por
ejemplo, concatene las dos primeras tablas en una tabla. Y después concatene la tercera tabla a esa
tabla creada.
l Las tablas que no sean lo suficientemente iguales no se concatenarán automáticamente. Tampoco
podrá concatenarlas a la fuerza. En este caso, los campos de la tabla deberían asociarse en el Gestor
de datos.
Requisitos previos
Debe saber cómo crear una app en Qlik Sense.
Por ejemplo, aquí tiene el encabezado y la primera fila de los datos que ofrecemos a continuación. Se han
pegado en dos tablas de Excel . Tenga en cuenta las diferencias en los campos.
If you want to use the sample data, copy the entire table, including the column headings, into an empty Excel
file on your computer. For this walkthrough, we named the Excel tabs Data Table 1 and DataTable 2. We
named the Excel file Concatenate_Data.xlsx.
Tabla de datos 1
Tabla de datos 1
Fecha de
SalesOrd SalesOrderDet TrackingNu Order PI SpecialOff UnitPri
modificac
erID ailID mber Qty D erID ce
ión
Fecha de
SalesOrd SalesOrderDet TrackingNu Order PI SpecialOff UnitPri
modificac
erID ailID mber Qty D erID ce
ión
Tabla de datos 2
Tabla de datos 2
Fecha de
SalesOrder SalesOrderDetai TrackingNumb OrderQ ProductI UnitPric
modificaci
ID lID er ty D e
ón
Fecha de
SalesOrder SalesOrderDetai TrackingNumb OrderQ ProductI UnitPric
modificaci
ID lID er ty D e
ón
Gestor de datos. En este caso, seleccione todos los campos para ambas tablas
Haga lo siguiente:
1. En la vista Asociaciones del Gestor de datos, seleccione una tabla haciendo clic en la burbuja.
Haga clic en ¥ y después seleccione Concatenar o unir .
2. Haga clic en la burbuja de la otra tabla y luego haga clic en Editar correspondencias.
4. En el desplegable Seleccionar acción , haga clic en Concatenar , y después clic en Aplicar . Las
tablas están concatenadas en los campos asignados. El * indica que los datos aún no se han cargado
en la app.
5. Haga clic en Cargar datos. Se muestra un mensaje que indica que los datos se cargaron
correctamente. Haga clic en Editar hoja para crear visualizaciones usando los datos.
campos. Las tablas pueden estar en archivos aparte que se agregan a la app. También puede agregar otra
tabla más adelante, por ejemplo, si inicialmente agrega una tabla de junio y luego desea agregar una
segunda tabla a partir de julio.
En este ejemplo, agregamos otra tabla con campos similares a la tabla concatenada que creamos
anteriormente.
Aquí está la muestra de datos. Denominamos a la pestaña que contiene la tabla: DataTable_Newest.
Denominamos el archivo de datos: Concatenate_Data2.xlsx.
DataTable_Newest
DataTable_Newest
Fecha de
SalesOrder SalesOrderDetai TrackingNum OrderQ UnitPric
ZIP ID modificaci
ID lID ber ty e
ón
Haga lo siguiente:
1. Desde el centro de control de Qlik Sense, haga clic en la app que creó en el procedimiento anterior.
La app se abre.
2. Seleccione Gestor de datos de la lista desplegable en la barra de herramientas superior. El Gestor
de datos se abre y se muestra la tabla que creó en el procedimiento anterior.
6. Ahora puede concatenar las tablas, editar las correspondencias y después cargar los datos.
l Las tablas de script deben estar ubicadas antes de la Sección generada automáticamente en el
script de carga de datos para sincronizarse como tablas de script gestionadas. Las tablas que vengan
tras la Sección generada automáticamente en el script de carga de datos no se sincronizarán.
l No puede utilizar Seleccionar datos fuente para cambiar la selección de campos en una tabla de
script gestionada.
No sincronice sus tablas con script si su script de carga de datos contiene una sentencia Exit
o campos dinámicos.
Para convertir sus tablas de script en tablas de script gestionadas, sincronice sus tablas de script en el
Gestor de datos. La sincronización hace lo siguiente:
l Reemplaza todas las tablas de script sincronizadas por tablas de script gestionadas.
l Elimina las tablas de script gestionadas cuyas tablas de script se hayan eliminado en el script de
carga de datos.
l Actualiza las tablas de script gestionadas cuyas tablas de origen se hayan modificado en el script de
carga de datos.
Evite modificar el script de carga de datos para tablas que ya se hayan sincronizado en
el Gestor de datos. Si elimina o modifica campos en el editor de carga de datos, debe
eliminar o rehacer cualquier campo derivado o asociaciones en la tabla sincronizada.
Los campos derivados que utilicen un campo eliminado o modificado, por ejemplo un
campo calculado o campos creados con el panel Dividir, muestran valores nulos.
Tras la sincronización, puede utilizar las tablas de script gestionadas en el Gestor de datos como cualquier
otra tabla. El Gestor de datos le pide que vuelva a sincronizar si detecta diferencias entre una tabla de
script gestionada y la tabla de script original.
Para cambiar las tablas de script gestionadas de nuevo en tablas de script, elimínelas en el Gestor de
datos. Debe repetir la eliminación si vuelve a sincronizar.
Las tablas de script gestionadas reemplazan a todas las tablas de script del Gestor de datos.
La tabla de script gestionada vuelve a ser de nuevo una tabla de script normal.
Si desea asociar sus datos, le recomendamos que utilice la opción Añadir datos con el perfilado de datos
habilitado. Esta es la opción predeterminada. Puede verificar esta configuración haciendo clic en ¥ junto al
botón Añadir datos en la esquina inferior derecha de la página Añadir datos.
En la vista Asociaciones del Gestor de datos sus datos se ilustran mediante burbujas, cada burbuja
representa una tabla de datos. El tamaño de la burbuja representa la cantidad de datos de la tabla. Los
enlaces entre las burbujas representan las asociaciones entre las tablas. Si hay una asociación entre dos
tablas, puede hacer clic en el botón del enlace para ver o editar la asociación.
En la mayoría de los casos, es más fácil editar las asociaciones de tablas en la vista modelo,
pero también puede editar las asociaciones de una sola tabla usando la opción Asociar en la
vista de edición de tablas.
Para más información, vea Asociar datos en el editor de tablas (page 57).
Si el panel está cerrado y existen recomendaciones, verá una placa en la parte superior de la Ñ que
muestra el número de recomendaciones.
Haga lo siguiente:
6. Haga clic en Aplicar todas para aplicar todas las asociaciones recomendadas. Las asociaciones que
han sido aceptadas se destacan en gris claro.
Puede hacer clic en j en la parte inferior de la pantalla para ver cómo han cambiado tus tablas.
l Verde: el Gestor de datos tiene plena confianza sobre qué campos asociar. Por ejemplo, si dos
tablas tienen campos etiquetados como "Sales Region", el Gestor de datos da por hecho que
deben estar asociados.
l Naranja: el Gestor de datos tiene bastante confianza en que esas tablas se pueden asociar. Por
ejemplo, si dos campos diferentes tienen etiquetas diferentes, pero contienen datos de un solo dígito,
el Gestor de datos los marcará en naranja porque los tipos de datos son similares.
l Rojo: el Gestor de datos no sabe cómo asociar estas tablas. Deberá elegir qué tablas y campos van
juntos en el editor de Tablas asociadas.
Haga lo siguiente:
Haga lo siguiente:
Haga lo siguiente:
l Haga clic en una de las tablas asociadas y arrástrela fuera de la otra tabla hasta que la asociación se
rompa. O también puede:
l Hacer clic en el enlace entre las dos burbujas y después hacer clic en el botón Eliminar en el panel
inferior.
Haga lo siguiente:
1. Haga clic en el círculo entre las tablas asociadas para abrir el panel de datos.
El panel se abre con una vista previa de los datos en los campos asociados.
2. Haga clic enk @ .
Verá uno o más botones, cada uno marcado en verde, naranja o rojo. Verde significa que el
Administrador de datos tiene confianza en la asociación, naranja significa que confía un poco y rojo
significa que está inseguro. La asociación actual está marcada en gris.
3. Haga clic en uno de los botones de asociación:
l Haga clic en una asociación recomendada para seleccionarla.
l Haga clic en una asociación personalizada (@ ) para editar qué campos usar en la asociación.
l Haga clic en Asociación personalizada para crear una nueva asociación.
Este botón solo está disponible si hay una asociación recomendada para el par de tablas.
Las asociaciones personalizadas pueden contener un solo campo o múltiples campos.
Haga lo siguiente:
Claves sintéticas
Cuando dos o más tablas de datos tienen dos o más campos en común, esto sugiere una relación de claves
compuestas. Qlik Sense manipula esto creando claves sintéticas automáticamente. Dichas claves son
campos anónimos que representan todas las combinaciones posibles de la clave compuesta.
Si añadir una tabla da como resultado uno de los casos siguientes, solo puede añadir datos con el perfilado
de datos habilitado:
Todos estos casos indican que debemos ajustar las tablas de datos para resolver los problemas.
Limitaciones
En algunos casos no se ofrecen recomendaciones de asociación debido a la estructura de las tablas
cargadas y a los datos de las tablas. En estos casos, debe ajustar las asociaciones en el editor de tablas.
Además, el Gestor de datos solo analizará las tablas que se agregaron mediante Añadir datos. Las tablas
agregadas usando el script de carga de datos no se incluyen en las recomendaciones de asociación, a menos
que se hayan sincronizado en el Gestor de datos.
Para más información, vea Sincronizar tablas de script en el Gestor de datos (page 108).
Puede volver a cargar todos los datos de las fuentes externas de datos utilizando el botón ô en el pie de
página del Gestor de datos.
El botón ô carga todos los datos de la tabla seleccionada. No carga todos los datos de todas las tablas de
la app.
Si los datos del Gestor de datos no están sincronizados con los datos de la app, el botón Cargar datos se
muestra de color verde. En la vista Asociaciones, todas las tablas nuevas o actualizadas se indican
mediante un asterisco * y las tablas eliminadas se ven de un color gris más claro. En la vista Tablas, todas
las tablas nuevas, actualizadas o eliminadas se destacan de color azul y muestran un icono que indica el
estado de la tabla:
Los datos de la app se actualizan ahora con los cambios que realizó en el Gestor de datos.
Qlik Sense utiliza un script de carga de datos, el cual se gestiona desde el editor de carga de datos, para
poder conectarse a diversas fuentes de datos y recuperar los datos alojados en ellas. Una fuente de datos
puede ser un archivo de datos, por ejemplo un archivo Excel o un archivo .csv. Una fuente de datos también
puede ser una base de datos, por ejemplo un Google BigQuery o base de datos de Salesforce.
También se pueden cargar datos desde el gestor de datos, pero cuando desee crear, editar y ejecutar un
script de carga de datos utilice el editor de carga de datos.
En el script se especifican los campos y las tablas que se van a cargar. Los scripts se utilizan a menudo para
especificar qué datos se van a cargar desde sus fuentes de datos. También puede manipular la estructura de
datos mediante sentencias de script.
Durante la carga de datos, Qlik Sense identifica los campos comunes a distintas tablas (campos clave) para
asociar los datos. La estructura de datos resultante de la app se puede monitorizar en el visor del modelo de
datos. Se pueden hacer cambios en la estructura de datos renombrando los campos, para así obtener
diferentes asociaciones entre las tablas.
Una vez que se han cargado los datos en Qlik Sense, se almacenan en la app.
El análisis en Qlik Sense siempre se produce mientras la app no está directamente conectada con sus
fuentes de datos. En consecuencia, para actualizar los datos, debemos ejecutar el script para recargar los
datos.
Las tablas de datos definidas en el script de carga no se gestionan desde el Gestor de datos de forma
predeterminada. Es decir, podremos ver las tablas en la vista general de datos, pero no podremos eliminar o
editar las tablas en el Gestor de datos, y no se ofrecen recomendaciones de asociaciones para tablas
cargadas mediante el script. Si sincroniza sus tablas de script con el Gestor de datos no obstante, sus
tablas de script se añadirán como tablas de script gestionadas al Gestor de datos.
Si tiene tablas sincronizadas, no debe realizar cambios en el editor de carga de datos con el
Gestor de datos abierto en otra pestaña.
Podemos añadir secciones al script y desarrollar código que mejore e interactúe con el modelo de datos
creado en el Gestor de datos, pero hay algunas áreas en las que debemos ir con cuidado. El código de
script que escribamos puede interferir con el modelo de datos del Gestor de datos y crear problemas en los
siguientes casos:
El script de carga de datos conecta una app con una fuente de datos y carga datos de la fuente de datos a la
app. Cuando haya cargado los datos, estará disponible para hacer análisis con la app. Cuando desee crear,
editar y ejecutar un script de carga de datos, utilice el editor de carga de datos.
Puede editar un script manualmente, o puede generarlo con el gestor de datos. Si necesita utilizar
sentencias de script complejas, debe editarlas manualmente.
A: La barra de herramientas
Barra de herramientas con los comandos más utilizados para el editor de carga de datos: menú global, u
(depurar) y Cargar datos ° . En la barra de herramientas, también se muestran los estados de guardado y
carga de datos de la app.
B: Conexiones de datos
En Conexiones de datos podemos guardar métodos abreviados (atajos) a las bases de datos o archivos
remotos que más utilizamos. Aquí también es donde se inicia la selección de los datos que se deben cargar.
C: Editor de texto
Podemos escribir y editar el código de script en el editor de texto. Cada línea del script está numerada y el
script viene codificado por colores según sus componentes de sintaxis. La barra de herramientas del editor de
texto contiene comandos para Buscar y reemplazar , el modo de Ayuda , Deshacer y Rehacer . El script
inicial ya contiene algunas configuraciones de variables regionales predefinidas, por ejemplo el separador de
miles SET ThousandSep=, que por lo general no necesita editar.
D: Secciones
Podemos dividir el script en secciones para hacerlo más sencillo de leer y mantener. Las secciones se
ejecutan de arriba a abajo.
Si ha añadido datos utilizando Añadir datos, tendrá una sección en el script de carga de datos denominada
Sección generada automáticamente que contiene el código de script requerido para cargar los datos.
E: Salida
Salida muestra el estatus de guardado automático y todos los mensajes que se generan durante la
ejecución del script.
Inicio rápido
Si desea cargar un archivo o tablas de una base de datos, es necesario realizar los siguientes pasos en
Conexiones de datos:
1. Cree una nueva conexión vinculada al origen de datos (si la conexión de datos todavía no existe).
2. ± Seleccione datos desde la conexión.
Cuando haya completado el diálogo de selección con Insertar script, puede seleccionar Cargar datos para
cargar el modelo de datos en la app.
Para obtener información más detallada sobre las funciones de script y las funciones de
gráfico, consulte la ayuda online de Sintaxis de script y funciones de gráficos.
Barras de herramientas
Las barras de herramientas permiten realizar acciones generales en el script de carga de datos, como
deshacer/rehacer, depurar y buscar/reemplazar. También puede hacer clic en Cargar datos ° para
recargar los datos de su app.
Menú global con opciones de navegación y acciones que puede realizar en su app.
Datos Prepare sus datos. Puede seleccionar Gestor de datos, Visor del modelo de datos o
Editor de carga de datos.
Las opciones no están disponibles en una app publicada, a menos que sea el propietario de la
app. En ese caso, solo puede abrir el Visor del modelo de datos.
Historia Cuente una historia con sus datos. Puede seleccionar Narración .
⊟ Puede mostrar u ocultar la información de la app, editar la información o abrir las opciones de
la app y dar estilo a su app.
u Depura el script.
° Ejecute el script para cargar los datos. La app se guarda automáticamente antes de la
Cargar recarga.
datos
… Comenta/elimina el comentario.
Opción Descripción
D Activa el modo de ayuda de la sintaxis. En el modo de ayuda podemos hacer clic en una
palabra clave de la sintaxis (marcada en azul) en el editor, para acceder a una ayuda detallada
de sintaxis.
B Deshace el último cambio realizado en la sección actual (se pueden deshacer múltiples pasos).
Equivale a pulsar Ctrl+Z.
En Conexiones de datos figuran las conexiones de datos guardadas por orden alfabético . Puede utilizar el
cuadro de búsqueda para reducir la lista a conexiones de un determinado nombre o tipo.
Solo puede ver las conexiones de datos que le pertenezcan o para las que disponga de
derechos de edición. Póngase en contacto con su administrador de sistemas de Qlik Sense
para solicitar acceso, si lo necesita.
Ahora se ha creado la conexión de datos con usted como el propietario predeterminado. Si desea que otros
usuarios puedan utilizar la conexión en una instalación de servidor, necesita editar los derechos de acceso de
la conexión en la consola Qlik Management Console.
Si no aparece Crear nueva conexión, significa que no posee los derechos de acceso
necesarios para añadir conexiones de datos. Póngase en contacto con su administrador de
sistemas de Qlik Sense para solicitar acceso, si lo necesita.
Si no aparece Ö , eso significa que no posee los derechos de acceso necesarios para eliminar
la conexión de datos. Póngase en contacto con su administrador de sistemas de Qlik Sense
para solicitar acceso, si lo necesita.
Si edita el nombre de una conexión de datos, también debe editar todas las referencias
existentes (lib://) a la conexión en el script, si desea seguir consultando la misma conexión.
Si no aparece @ , eso significa que no posee los derechos de acceso necesarios para
actualizar la conexión de datos. Póngase en contacto con su administrador de sistemas de
Qlik Sense, si lo necesita.
Haga lo siguiente:
l Haga clic en Ø en la conexión para la que desee insertar una cadena de conexión.
Se inserta una cadena de conexión para la conexión de datos seleccionada en la posición actual del editor de
carga de datos.
1. Cree una conexión nueva vinculada a la fuente de datos (si la conexión de datos no existe
todavía).
2. ± Seleccione datos desde la conexión.
Este ejemplo carga el archivo orders.csv desde la ubicación definida en la conexión de datos Folder. Esto
puede ser, por ejemplo, una carpeta que su administrador crea en el servidor de Qlik Sense.
Este ejemplo carga el archivo Customers/cust.txt desde la carpeta de conexión de datos DataSource.
Customers es una subcarpeta en la ubicación definida en la conexión de datos.
Este ejemplo carga una tabla desde la conexión de datos de archivos web PublicData, el cual contiene la
URL real.
Este ejemplo carga la tabla Sales_data desde la carpeta de conexión de datos DataSource.
En Qlik Sense Desktop todas las conexiones se guardan en la app sin cifrar. Ello incluye los
posibles detalles sobre el nombre de usuario, contraseña y la ruta de archivo que se ha
introducido al crear la conexión. Esto significa que todos estos detalles pueden estar
disponibles en forma de texto no cifrado si comparte la app con otro usuario. Este hecho debe
tenerse en cuenta cuando se diseñe una app que vaya a compartirse.
Algunas fuentes de datos, como un archivo CSV, contienen una sola tabla, mientras que otras fuentes de
datos, como las bases de datos u hojas de cálculo de Microsoft Excel, pueden contener varias tablas.
No agregue una tabla en el Editor de carga de datos que ya se haya agregado como una
tabla con secuencias de script con el mismo nombre y las mismas columnas que en el Gestor
de datos.
Seleccionar datos se abre haciendo clic en ± en una conexión de datos en el editor de carga de datos.
Haga lo siguiente:
No es posible renombrar dos campos en la misma tabla para que tengan nombres
idénticos.
Haga lo siguiente:
Tamaño Defina el número de filas que se deben omitir como cabecera de tabla, por lo general
de filas que contengan información general que no esté en un formato de columna.
cabecera
Ejemplo
La hoja de cálculo presentará el siguiente aspecto:
Hoja de cálculo
Equipo: AEJ12B - -
Fecha: 2015-10-05 09 - -
En este caso probablemente desee ignorar las dos primeras líneas y cargar una tabla con los campos
Timestamp, Order, Operator y Yield. Para lograr esto, utilice estos parámetros:
Parámetros para ignorar las dos primeras líneas y cargar los campos
Elemento
Descripción
de IU
Tamaño 2
de Esto significa que las dos primeras líneas se consideran datos de cabecera y se
cabecera ignoran cuando se carga el archivo. En este caso, las dos líneas que comienzan con
Machine: y Date: se ignoran, ya que no son parte de los datos de la tabla.
5. Seleccione los campos que desee cargar marcando la casilla situada junto a cada campo que quiera
cargar.
También puede usar un archivo de Microsoft Excel como fuente de datos usando la interfaz
ODBC. En ese caso debe usar una conexión de datos ODBC en lugar de una conexión de
datos Todos los archivos.
l Archivos de texto, donde los datos en los campos están separados por delimitadores como comas,
tabuladores o signos de punto y coma (archivos (CSV) de variables separadas por comas).
l Tablas HTML.
l Archivos XML.
l Archivos KML.
l Archivos nativos de Qlik QVD y QVX.
l Archivos de tabla con registros de longitud fija.
l Archivos DIF (Data Interchange Format).
Haga lo siguiente:
Tamaño de cabecera El número de líneas que desee omitir como cabecera de tabla.
Comentario Los archivos de datos pueden contener comentarios entre registros, los cuales
se caracterizan por una línea inicial con uno o más caracteres especiales, por
ejemplo //.
Especifique uno o más caracteres que denotarán una línea de comentario. Qlik
Sense no carga líneas que comiencen con los caracteres aquí especificados.
Ignorar EOF Seleccione Ignorar EOF si sus datos contienen caracteres de final de archivo
como parte del valor de campo.
l Introduzca manualmente las posiciones de salto de campo separadas por comas en Posiciones de
salto de campo . Cada posición marca el inicio de un campo.
Example: 1,12,24
l Habilite Saltos de campo para editar las posiciones de salto de campo interactivamente en la vista
previa de los datos de campo. Las Posiciones de salto de campo se actualizan con las posiciones
seleccionadas. Podemos:
l Hacer clic en la vista previa de datos de campo para insertar un salto de campo.
l Hacer clic en un salto de campo para eliminarla.
l Arrastrar un salto de campo para moverlo.
Nombres de campo Especifique si la tabla contiene Nombres de campo incluidos o Sin nombres
de campo .
Tamaño de cabecera Establezca el Tamaño de cabecera en el número de líneas que desee omitir
como cabecera de tabla.
Tamaño de línea de Defina el número de líneas que ocupa un registro en el archivo de tabla. Por
registro defecto es 1.
Archivos HTML.
Los archivos HTML pueden contener varias tablas. Qlik Sense interpreta todos los elementos con una
etiqueta <TABLE> como una tabla.
Archivos XML.
Puede cargar datos que estén almacenados en formato XML.
Archivos QVD.
Puede cargar datos que estén almacenados en formato QVD. QVD es un formato nativo de Qlik y solo
pueden leerlo y escribirlo Qlik Sense o QlikView. El formato de archivo está optimizado para mejorar la
velocidad de lectura de datos desde un script Qlik Sense, pero es al mismo tiempo muy compacto.
Archivos QVX.
Puede cargar datos almacenados en formato Qlik data eXchange (QVX). Los archivos QVX se crean
mediante conectores personalizados desarrollados con Qlik QVX SDK.
Archivos KML.
Puede cargar archivos de mapas que estén almacenados en formato KML, para usarlos en visualizaciones
de mapas.
Si cambia el nombre de los campos de una tabla, se insertará una sentencia LOAD
automáticamente, independientemente de esta configuración.
El script, que se debe escribir con la sintaxis de script de Qlik Sense, está codificado mediante colores para
facilitar la distinción de los diversos elementos. Los comentarios se resaltan en verde, mientras que las
palabras clave de la sintaxis de Qlik Sense se resaltan en azul. Cada línea de script está numerada.
Hay varias funciones disponibles en el editor para ayudarle a desarrollar el script de carga, y se describen en
esta sección.
l Haga clic en D en la barra de herramientas para entrar en el modo de ayuda de sintaxis. En el modo
de ayuda de la sintaxis podemos hacer clic en una palabra clave de la sintaxis (marcada en azul y
subrayada) para acceder a la ayuda detallada de sintaxis.
l Coloque el cursor en el interior o al final de la palabra clave y pulse Ctrl+H.
También puede usar el método abreviado de teclado Ctrl+Espacio para mostrar la lista de
palabras clave y Ctrl+Mayús+Espacio para mostrar una información relativa a herramientas.
Haga lo siguiente:
Haga lo siguiente:
Tabulador (indentar)
Buscar texto
Abra el editor de carga de datos. Haga lo siguiente:
También puede seleccionar Buscar en todas las secciones para buscar en todas las
secciones de script. El número de instancias de texto encontradas se indica junto a cada
etiqueta de sección. Puede seleccionar Sensible a mayúsculas para realizar búsquedas
sensibles a mayúsculas y minúsculas.
Reemplazar texto
Haga lo siguiente:
Podemos seleccionar también Reemplazar todo en la sección para reemplazar todas las
instancias de la cadena de búsqueda en la actual sección de script. La función de reemplazo
distingue entre mayúsculas y minúsculas y, por tanto, el texto reemplazado tendrá el mismo
formato en el campo de reemplazo. Se muestra un mensaje con información sobre cuántas
instancias se han reemplazado.
Comentarios en el script
Puede insertar comentarios en el código de script o desactivar partes del código de script mediante el uso de
marcas de comentario. Todo el texto de una línea que vaya a la derecha de // (dos barras diagonales) se
considerará un comentario y no se ejecutará cuando se ejecute el script.
La barra de herramientas del editor de carga de datos contiene un acceso directo para añadir o eliminar
comentarios del código. La función actúa como un conmutador; Es decir, que si el código seleccionado no se
comenta, se comentará, y viceversa.
Comentar
Haga lo siguiente:
1. Seleccione una o más líneas de código que no estén comentadas o coloque el cursor al principio de
una línea.
2. Haga clic en … o pulse Ctrl + K.
Descomentar
Haga lo siguiente:
1. Seleccione una o más líneas de código que esté comentadas o coloque el cursor al principio de una
línea comentada.
2. Haga clic en … o pulse Ctrl + K.
Example:
/* This is a comment
that spans two lines */
Haga lo siguiente:
l Pulse Ctrl + A.
Si ha añadido datos utilizando Añadir datos, tendrá una sección en el script de carga de datos denominada
Sección generada automáticamente que contiene el código de script requerido para cargar los datos.
Haga lo siguiente:
l Haga clic en P .
Haga lo siguiente:
l Haga clic en E junto a la pestaña de sección para borrarla. Se le pedirá confirmación antes de
eliminarla.
Ahora se ha eliminado la sección.
Haga lo siguiente:
Haga lo siguiente:
No podrá crear conexiones, editar conexiones, seleccionar datos, guardar el script o cargar
datos mientras se encuentre en el modo de depuración. El modo de depuración comienza con
la ejecución del depurador y continúa hasta que el script se ha ejecutado o la ejecución ha
terminado.
Carga Habilítelo para limitar cuántas filas de datos cargar desde cada fuente de datos. Esto viene
limitada bien para reducir el tiempo de ejecución si sus fuentes de datos son muy extensas.
Esto solo se aplica a los orígenes de datos físicos. Por ejemplo, las cargas
Inline y las generadas automáticamente no se limitarán.
œ Inicie o continúe la ejecución en modo de depuración hasta que se alcance el siguiente punto
de interrupción.
– Finalice la ejecución aquí. Si termina antes de que se haya ejecutado todo el código, el
modelo de datos resultante solo contendrá datos hasta la línea de código en la que finalizó la
ejecución.
Salida
Salida muestra todos los mensajes de salida que se generan durante la ejecución del depurador. Puede
seleccionar bloquear el resultado del desplazamiento cuando se muestran nuevos mensajes haciendo clic en
\.
Borrar Haga clic en esta opción para eliminar todos los mensajes de salida.
Seleccionar todo el texto Haga clic en esta opción para seleccionar todos los mensajes de salida.
Desplazarse hacia el Haga clic en esto opción para desplazarse hasta el último mensaje de
final salida.
Variables
Variables muestra todas las variables reservadas, variables de sistema y variables definidas en el script, y
muestra los valores actuales durante la ejecución de script.
Variables de filtrado
Puede aplicar un filtro para mostrar solo un tipo seleccionado de variables usando las siguientes opciones del
menú de variables (¨ ):
Mostrar todas las variables Haga clic aquí para que se muestren todos los tipos de variables.
Mostrar variables de Haga clic aquí para que se muestren las variables de sistema.
sistema
Las variables de sistema están definidas por Qlik Sense, pero se puede
cambiar el valor de la variable en el script.
Mostrar variables Haga clic aquí para que se muestren las variables reservadas.
reservadas
Las variables reservadas están definidas por Qlik Sense y su valor no se
puede cambiar.
Mostrar las variables Haga clic aquí para que se muestren las variables definidas por el
definidas por el usuario usuario.
Puntos de interrupción
Puede añadir puntos de interrupción a su script para poder detener la ejecución del depurador en
determinadas líneas de código e inspeccionar los valores de las variables y los mensajes de salida en este
punto. Cuando llegue a un punto de interrupción, puede escoger detener la ejecución de script, continuar
hasta el siguiente punto de interrupción o avanzar hasta la siguiente línea de código. Todos los puntos de
interrupción van numerados en el script, con una referencia de sección y número de línea.
l En el script, haga clic directamente en el área a la derecha del número de línea donde desee añadir el
punto de interrupción.
Una Q junto al número de línea indicará que hay un punto de interrupción en esta línea.
También puede hacer clic en ¨ y seleccionar Eliminar todos para eliminar todos los puntos de interrupción
del script.
l Habilitar todos
l Deshabilitar todos
El script se ha guardado, pero la app aún contendrá los datos antiguos de la anterior recarga, lo cual se indica
en la barra de herramientas. Si desea actualizar la app con los nuevos datos, haga clic en Cargar datos°
en la barra de herramientas del editor de carga de datos. El script se guarda automáticamente en la app al
cargar los datos.
El editor de carga de datos guarda su trabajo automáticamente a medida que realiza cambios en su script de
carga. Puede forzar un guardado pulsando CTRL+S.
Cuando guardamos un script, se verifican automáticamente los errores de sintaxis. Los errores de sintaxis se
destacan en el código, y todas las secciones del script que contienen errores de sintaxis se indican mediante
una ù junto a la etiqueta de sección.
Aparece el cuadro de diálogo Progreso de carga de datos y puede Cancelar la carga. Una vez finalizada
la carga de datos, el cuadro de diálogo se actualiza con el estado (Completado o Fallido ) y aparece un
resumen de los posibles errores y advertencias, como las claves sintéticas. El resumen también se muestra
en Salida , por si desea verlo después de que se haya cerrado el cuadro de diálogo.
A continuación se detallan los métodos abreviados de teclado teniendo en cuenta que está
trabajando en Windows. Para Mac OS use Cmd en vez de Ctrl.
Alt+F5 Muestra las herramientas del depurador o las oculta si están visibles.
l Extraer
El primer paso consiste en extraer datos del sistema de origen de datos. En un script, se utilizan las
sentencias SELECT o LOAD para definir esto. Las diferencias entre estas sentencias son las
siguientes:
l SELECT sirve para seleccionar datos desde una fuente de datos ODBC o proveedor de OLE
DB. La sentencia SELECT SQL la evalúa el proveedor de datos y no Qlik Sense.
l La sentencia LOAD carga datos desde un archivo, desde datos definidos en el script, desde
una tabla previamente cargada, desde una página web, desde el resultado de una sentencia
SELECT posterior, o bien generando los datos automáticamente.
l Transformar
La etapa de transformación consiste en la manipulación de los datos mediante las funciones de script
y las reglas para derivar la estructura deseada del modelo de datos. Las operaciones habituales son:
l Calcular nuevos valores
l Traducir los valores codificados
l Renombrar campos
l Unir tablas
l Agregar los valores
l Pivotar
l Validar los datos
l Cargar
En el paso final, se ejecuta el script para cargar el modelo de datos que se ha definido en la app.
El objetivo debería ser crear un modelo de datos que permita una manipulación eficaz de los datos en Qlik
Sense. Por lo general esto significa que deberíamos buscar un esquema de estrella razonablemente
normalizado o un esquema en copo de nieve sin referencias circulares, esto es, un modelo en el que cada
entidad se almacena en una tabla aparte. En otras palabras, un modelo de datos típico presentaría el
siguiente aspecto:
l Una tabla de hechos central que contiene claves a las dimensiones y los números utilizados para
calcular medidas (como número de unidades, cifras de ventas y cifras de presupuestos).
l Unas tablas secundarias alrededor conteniendo las dimensiones con todos sus atributos (como
productos, clientes, categorías, calendario y proveedores).
En muchos casos es posible resolver una tarea, por ejemplo agregaciones, bien creando un
modelo de datos más rico o bien realizando las agregaciones en las expresiones del gráfico.
Como regla general, experimentará un mejor rendimiento si mantiene las funciones de
transformación de datos en el script de carga.
Es una buena práctica escribir primero un boceto del modelo de datos en papel. Esto le
ayudará a estructurar qué datos extraer y qué transformaciones efectuar.
l SELECT sirve para seleccionar datos desde una fuente de datos ODBC o proveedor de OLE DB. La
sentencia SELECT SQL la evalúa el proveedor de datos y no Qlik Sense.
l La sentencia LOAD carga datos desde un archivo, desde datos definidos en el script, desde una tabla
previamente cargada, desde una página web, desde el resultado de una sentencia SELECT
posterior, o bien generando los datos automáticamente.
Reglas:
Tenga en cuenta las siguientes reglas cuando vaya a cargar datos en Qlik Sense:
l Qlik Sense no distingue entre las tablas generadas por una sentencia LOAD o SELECT. Esto
significa que, al cargar varias tablas, no importa si se cargan mediante sentencias LOAD o SELECT
o una combinación de ambas.
l El orden de los campos en la sentencia o en la tabla original de la base de datos es indiferente para la
lógica de Qlik Sense.
l Los nombres de los campos se utilizan en el proceso posterior para identificar los campos y establecer
asociaciones. Los nombres distinguen entre mayúsculas y minúsculas, por eso en muchas ocasiones
habrá que cambiarlos de nombre en el script.
Ejecución de script
Por lo general, el orden de eventos de una típica sentencia LOAD o SELECT es el siguiente:
Campos
Los campos son las entidades primarias de almacenamiento de datos en Qlik Sense. Un campo
normalmente contiene una serie de valores, denominados valores de campo. En la terminología de las bases
de datos se dice que los datos procesados por Qlik Sense proceden de los archivos de datos. Un archivo se
compone de varios campos donde cada entrada de datos constituye un registro. Los términos archivo, campo
y registro son equivalentes a tabla, columna y fila respectivamente. La lógica AQL de Qlik Sense funciona
únicamente en los campos y sus valores de campo.
Los datos de campo son recuperados por el script mediante sentencias LOAD, SELECT o Binary. La única
manera de modificar los datos de un campo es ejecutando de nuevo el script. Los valores de campo reales no
pueden ser manipulados por el usuario desde el diseño ni por medio de la Automatización. Una vez leídos en
Qlik Sense, solo pueden visualizarse y emplearse para selecciones lógicas y cálculos.
Los valores de campo consisten en datos numéricos o alfanuméricos (texto). Los valores numéricos en
realidad tienen dos valores, el valor numérico actual y su representación de texto con formato. En los objetos
de hoja solo se muestra este último.
Campos derivados
Si tenemos un grupo de campos que están relacionados, o si los campos portan información que puede
desglosarse en partes más pequeñas útiles para crear dimensiones o medidas, podemos crear definiciones
de campos que sirvan para generar campos derivados. Un ejemplo de esto es un campo de fecha, desde el
que podemos derivar múltiples atributos, como por ej. año, mes, número de semana o día de la semana.
Todos estos atributos pueden calcularse en una expresión de dimensión empleando funciones de fecha de
Qlik Sense, pero una alternativa es crear una definición de calendario que sea común para todos los campos
del tipo fecha. Las definiciones de campo se almacenan en el script de carga de datos.
No utilice autoCalendar como nombre para las definiciones de campos de calendario, ya que
este nombre se reserva para las plantillas de calendario generadas automáticamente.
Calendar:
DECLARE FIELD DEFINITION TAGGED '$date'
Parameters
first_month_of_year = 1
Fields
Year($1) As Year Tagged ('$numeric'),
Month($1) as Month Tagged ('$numeric'),
Date($1) as Date Tagged ('$date'),
Week($1) as Week Tagged ('$numeric'),
Weekday($1) as Weekday Tagged ('$numeric'),
DayNumberOfYear($1, first_month_of_year) as DayNumberOfYear Tagged ('$numeric');
l Asociar todos los campos que contengan una o más etiquetas de campo específicas.
DERIVE FIELDS FROM EXPLICIT TAGS ('$date') USING Calendar;
l Asociar todos los campos que están etiquetados con una de las etiquetas de la definición de campo
($date en el ejemplo anterior).
DERIVE FIELDS FROM IMPLICIT TAG USING Calendar;
En este caso podría utilizar cualquiera de los tres ejemplos aquí presentados.
Etiquetas de campo
Las etiquetas de campo ofrecen la posibilidad de añadir metadatos a los campos de su modelo de datos. Hay
dos tipos de etiquetas de campo:
$key Campo clave que proporciona un enlace entre dos o más tablas. No
Puede
Etiqueta Descripción manipularse
en el script
$numeric Todos los valores del campo (que no sean NULL) son numéricos. Sí
$integer Todos los valores del campo (que no sean NULL) son enteros. Sí
$date Todos los valores del campo (que no sean NULL) se pueden Sí
interpretar como fechas (enteros).
$timestamp Todos los valores del campo (que no sean NULL) se pueden Sí
interpretar como marcas de fecha-hora.
$axis La etiqueta $axis se usa para especificar que el campo debe generar una marca de
verificación en el eje contiguo del gráfico.
Etiqueta Descripción
$qualified Puede especificar una versión cualificada y otra simplificada de una etiqueta de un eje
derivando dos campos distintos. El campo cualificado se muestra como una etiqueta cuando
$simplified
se acerca el eje con el zoom hasta un nivel más profundo, para mostrar todo el contexto.
Por ejemplo, puede generar dos campos cuando muestre los datos por trimestre:
Cuando nos alejamos del eje de tiempo con el zoom, el eje muestra las etiquetas en dos
niveles, para el año (2016) y el trimestre (Q1), usando el campo simplificado. Cuando nos
acercamos con el zoom, el eje muestra las etiquetas de trimestre y mes, y el campo
cualificado (2016-Q1) se utiliza para ofrecer un contexto completo anual para el trimestre.
$cyclic La etiqueta $cyclic se utiliza para campos cíclicos, por ejemplo, trimestre o mes, con una
representación doble de los datos.
Campos de sistema
Además de los campos que se extraen de la fuente de datos, los campos de sistema son campos producidos
por Qlik Sense. Todos ellos comienzan con un "$" y pueden mostrarse como campos normales en una
visualización, como un panel de filtrado o una tabla. Los campos de sistema se crean automáticamente
cuando cargamos datos y se utilizan principalmente como ayuda para el diseño de una app.
Los campos de sistema no se incluyen en las listas de campos en el panel de activos. Se incluyen en el editor
de expresiones. Si desea utilizar un campo de sistema en el panel de activos necesita referenciarlo
introduciéndolo manualmente.
=$Field
Renombrar campos
A veces es necesario renombrar campos para obtener las asociaciones deseadas. Las tres razones
principales para renombrar campos son:
l Dos campos tienen distintos nombres, pero denotan una misma cosa:
l El campo ID en la tabla Customers
l El campo CustomerID en la tabla Orders
Los dos campos denotan un código de identificación de cliente específico y ambos deben tener el
mismo nombre, por ejemplo, CustomerID .
l Dos campos tienen idéntico nombre, pero denotan cosas distintas:
l El campo Date en la tabla Invoices
l El campo Date en la tabla Orders
Los dos campos deben ser renombrados, por ejemplo, InvoiceDate y OrderDate.
l También podría ocurrir que hubiera errores de ortografía o escritura en la base de datos, o diferentes
convenciones en cuanto al uso de mayúsculas o minúsculas.
Los campos pueden renombrarse en el script, no hace falta modificar los datos originales. Hay dos formas
distintas de renombrar los campos, como se muestra en los ejemplos.
Alias ID as CustomerID;
LOAD * from Customer.csv;
Tablas lógicas
Cada sentencia LOAD o SELECT genera una tabla. Normalmente, Qlik Sense trata el resultado de cada
una de ellas como una tabla lógica. Sin embargo, hay un par de excepciones a esta regla:
l Si dos o más sentencias dan como resultado tablas con idénticos nombres de campo, las tablas serán
concatenadas y tratadas como una tabla lógica.
l Si una sentencia LOAD o SELECT va precedida de cualquiera de los siguientes cualificadores, los
datos se alteran o se tratan de forma distinta.
Tablas lógicas
Tabla Descripción
concatenate Esta tabla está concatenada con (unida a) otra tabla designada ya existente, o con la
última tabla lógica creada.
crosstable Esta tabla no está pivotada. Es decir, se convierte del formato de tabla cruzada al
formato de columnas.
info Esta tabla no se carga como una tabla lógica, sino como una tabla de información que
contiene enlaces a información externa, como archivos, sonidos, URL, etc.
intervalmatch La tabla (que debe contener exactamente dos columnas) se interpreta como intervalos
numéricos, los cuales están asociados con números discretos en un campo especificado.
join Esta tabla va unida por Qlik Sense con otra ya existente o con la última tabla lógica
creada, a través de sus campos en común.
keep Esta tabla se reduce a los campos en común con otra tabla designada ya existente, o con
la última tabla lógica creada.
mapping Esta tabla (que debe contener exactamente dos columnas) se lee como una tabla de
enlace, la cual no se asocia nunca a otras tablas.
semantic Esta tabla no se carga como una tabla lógica, sino como una tabla semántica, la cual
contiene relaciones que no deberían unirse, por ej. predecesor, sucesor y otras
referencias a otros objetos del mismo tipo.
Nombres de tabla
A las tablas de Qlik Sense se les pone el nombre al almacenarlas en la base de datos interna de Qlik Sense.
Los nombres de tabla se pueden usar, por ejemplo, para sentencias LOAD con una cláusula resident o con
expresiones que contienen la función peek, y se pueden ver en el campo de sistema $Table en el diseño.
1. Si una etiqueta precede inmediatamente a una sentencia LOAD o SELECT, la etiqueta se utiliza
como nombre de tabla. La etiqueta debe ir seguida de dos puntos ":".
Example:
Table1:
LOAD a,b from c.csv;
Hay tres dominios distintos para los nombres de tablas: section access, section application y tablas de
correspondencia o enlace. Los nombres de tabla generados en section access y section application se
tratan por separado. Si un nombre de tabla mencionado no se encuentra en la sección en cuestión, Qlik
Sense lo buscará también en las otras secciones. Las tablas de correspondencia se gestionan
individualmente y no tienen absolutamente ninguna conexión con los otros dos dominios de los nombres de
tabla.
Etiquetas de tabla
Una tabla se puede etiquetar para referencia posterior, por ejemplo, mediante una sentencia LOAD con una
cláusula resident o con expresiones que contengan la función peek. La etiqueta, que puede ser una cadena
arbitraria de números o caracteres, deberá preceder a la primera o segunda sentencia LOAD o SELECT que
crea la tabla. La etiqueta debe ir seguida de dos puntos " :".
Las etiquetas que contengan espacios en blanco deben citarse empleando comillas simples o dobles o
corchetes.
Example 1:
Table1:
LOAD a,b from c.csv;
LOAD x,y from d.csv where x=peek('a',y,'Table1');
[All Transactions]:
SELECT * from Transtable;
LOAD Month, sum(Sales) resident [All Transactions] group by Month;
Example:
Si dos tablas son listados de cosas distintas, por ejemplo, si una es una lista de clientes y otra una lista de
facturas y ambas tablas tienen un campo en común, como puede ser el número de cliente, en general
podemos decir que existe una relación entre ambas tablas. En las herramientas SQL estándar de consulta,
las dos tablas siempre deberían ir unidas.
Las tablas definidas en el script de Qlik Sense se denominan tablas lógicas. Qlik Sense efectúa asociaciones
entre las tablas basándose en los nombres de campo y lleva a cabo las uniones cuando se realiza una
selección, por ejemplo, cuando el usuario selecciona un valor de campo en un filtro.
Esto significa que una asociación es casi lo mismo que una unión mediante ‘join’. La única diferencia está en
que la unión join se efectúa al ejecutarse el script y la tabla lógica es normalmente el resultado del join. La
asociación se realiza tras crearse la tabla lógica, las asociaciones siempre se realizan entre tablas lógicas.
Cuatro tablas: una lista de países, una lista de clientes, una lista de transacciones y una lista de suscripciones,
que están asociadas entre sí a través de los campos Country y CustomerID.
Asociación de Qlik Sense comparada con un join natural externo (outer join) de SQL
Un asociación de Qlik Sense se parece a un join natural externo (outer join) de SQL. Sin embargo, la
asociación es más general: un outer join en SQL suele ser una proyección unidireccional de una tabla en
otra. Una asociación siempre da como resultado un natural outer join completo (bidireccional).
Qlik Sense analiza los datos para ver si existe alguna forma no ambigua de identificar una tabla principal en
la que contar (a veces existe), pero en la mayoría de los casos el programa solo puede hacer una suposición.
Dado que una suposición errónea podría ser fatal (Qlik Sense daría la impresión de cometer errores en los
cálculos), el programa ha sido diseñado de tal manera que no permite determinadas operaciones cuando la
interpretación de los datos es ambigua para campos asociados.
Solución
Hay una manera muy simple de superar estas limitaciones. Cargue el campo una vez más, con un nuevo
nombre, en la tabla donde deba contabilizarse la frecuencia. Utilice a continuación el nuevo campo para un
panel de filtrado con la configuración de frecuencia, para un cuadro de estadísticas o para cálculos en sus
gráficos.
Claves sintéticas
Cuando dos o más tablas de datos tienen dos o más campos en común, esto sugiere una relación de claves
compuestas. Qlik Sense manipula esto creando claves sintéticas automáticamente. Dichas claves son
campos anónimos que representan todas las combinaciones posibles de la clave compuesta.
Si recibe una advertencia sobre las claves sintéticas cuando esté cargando datos, es recomendable revisar la
estructura de datos en el visor del modelo de datos. Pregúntese a sí mismo si el modelo de datos es correcto
o no. A veces lo es pero, a menudo, la clave sintética se encuentra ahí debido a un error en el script.
La presencia de varias claves sintéticas suelen ser un síntoma de un modelo de datos incorrecto, pero no
siempre. Sin embargo, un signo inequívoco de que el modelo de datos es incorrecto es la presencia de claves
sintéticas basadas en otras claves sintéticas.
l Compruebe que solo se usan como claves los campos que vinculan lógicamente dos tablas.
l Los campos como “Comentario”, “Observación” y “Descripción” pueden estar presentes en
varias tablas sin que exista relación alguna entre ellos y, por tanto, no se deben usar como
claves.
l Los campos como “Fecha”, “Compañía” y “Nombre” pueden estar presentes en varias tablas y
tener valores idénticos, pero proporcionar distinta información (Fecha del pedido/Fecha de
envío, Compañía del cliente/Compañía del proveedor). En este tipo de casos no se deben usar
como claves.
l Asegúrese de que no se usan campos redundantes, es decir, asegúrese de que solo se conectan los
campos necesarios. Por ejemplo, si va a usar una fecha como clave, asegúrese de no cargar el “año”,
el “mes” o el “día del mes” de la misma fecha de más de una tabla interna.
l Si fuera necesario, cree sus propias claves no compuestas; esto se suele hacer mediante la
concatenación de cadenas dentro de una función de script AutoNumber.
Por lo general debería evitarse este tipo de estructura de datos en la medida de lo posible, ya que puede
llevar fácilmente a ambigüedades en la interpretación de los datos.
Tres tablas con una referencia circular, ya que hay más de una ruta de asociación entre dos campos.
Qlik Sense resuelve el problema de las referencias circulares interrumpiendo el bucle con una tabla
parcialmente desconectada. Si Qlik Sense encuentra estructuras circulares de datos durante la ejecución de
un script de carga, aparecerá un cuadro de diálogo de advertencia y una o varias tablas se definirán como
desconectadas parcialmente. Normalmente, Qlik Sense intenta desconectar la tabla más larga del bucle, ya
que a menudo suele tratarse de una tabla de transacciones que, por regla general, es la que se debe
desconectar. En el visor del modelo de datos, las tablas parcialmente desconectadas se indican mediante
líneas discontinuas de color rojo hacia otras tablas.
Example:
Se cargan los datos procedentes de tres tablas con los siguientes contenidos:
Esta estructura de datos no es muy buena, ya que el nombre de campo Team se usa con dos fines
diferentes: equipos nacionales y clubes locales. Con estos datos en las tablas la situación lógica que nos
encontramos es imposible de analizar.
Cuando se cargan las tablas en Qlik Sense, Qlik Sense determina cuál de las conexiones de datos es la de
menor importancia y desconecta esa tabla.
Abra el Visor del modelo de datos para ver cómo interpreta Qlik Sense la relevancia de las conexiones de
datos:
Vista de las referencias circulares indicadas mediante las líneas de puntos rojos.
La tabla con ciudades y los países a los que pertenecen ahora está parcialmente desconectada con respecto
a la tabla de equipos nacionales de diferentes países y la tabla de clubes locales de distintas ciudades.
Haga lo siguiente:
3. Haga clic en ° en la barra de herramientas para volver a cargar los datos en la app.
Ahora tenemos una lógica que funciona correctamente en todas las tablas. En este ejemplo, cuando se
selecciona Germany, el equipo nacional, las ciudades alemanas y los clubes locales de cada ciudad se
asocian:
Cuando abrimos el Visor del modelo de datos, vemos que las conexiones parcialmente desconectadas
han sido reemplazadas por unas conexiones normales:
Concatenar tablas
La concatenación es una operación que combina dos tablas en una sola.
Las dos tablas se añaden simplemente la una a la otra. Es decir, 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.
Example:
El número y los nombres de los campos deben ser exactamente iguales. El orden de las dos
sentencias es arbritario.
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 última tabla
previamente creada.
Example:
La tabla interna resultante tiene los campos a, b y c. El número de registros de la tabla resultante es la suma
de los números de registros de la tabla 1 y la tabla 2. El valor del campo b en los registros que vienen de la
tabla 2 es NULL.
Example:
l Resident LOAD: usamos el predicado Resident en una sentencia LOAD subsiguiente para cargar
una nueva tabla.
l Load precedente: se carga desde la sentencia LOAD o SELECT precedente sin especificar una
fuente.
l Si desea utilizar la cláusula Order_by para ordenar los registros antes de procesar la sentencia
LOAD.
l Si desea utilizar cualquiera de los siguientes prefijos, para los casos en que no se admite LOAD
precedente:
l Crosstable
l Join
l Intervalmatch
Resident LOAD
Puede utilizar el predicado Resident en una sentencia LOAD para cargar datos desde una tabla
previamente cargada. Esto es útil cuando desea realizar cálculos en los datos cargados con una sentencia
SELECT donde no tiene la opción de usar funciones Qlik Sense, como la fecha o el manejo de valores
numéricos.
Example:
En este ejemplo, la interpretación de la fecha se realiza en el Resident load, ya que no se puede hacer en el
Crosstable LOAD inicial.
PreBudget:
Crosstable (Month, Amount, 1)
LOAD Account,
Jan,
Feb,
Mar,
…
From Budget;
Budget:
Noconcatenate
LOAD
Account,
Month(Date#(Month,'MMM')) as Month,
Amount
Resident PreBudget;
Un caso habitual de uso de Resident es cuando desea utilizar una tabla temporal para
cálculos o filtrado. Una vez que haya alcanzado el propósito de la tabla temporal, debe
eliminarse utilizando la sentencia Drop table.
Load precedente
La función load precedente permite cargar una tabla en una sola pasada mientras se conserva la posibilidad
de definir varias transformaciones sucesivas. Básicamente, es una sentencia LOAD que carga desde la
sentencia LOAD o SELECT inferior, sin especificar un cualificador de origen como From o Resident, como
se haría normalmente. Puede apilar cualquier número de sentencias LOAD de esta manera. En primer lugar
se evaluará la sentencia final, luego la sentencia superior, etc., hasta que se haya evaluado la sentencia del
principio.
Puede lograr el mismo resultado usando Resident, pero en la mayoría de los casos un LOAD precedente
será más rápido.
Otra ventaja del load precedente es que puede mantener un cálculo en un lugar y reutilizarlo en las
sentencias LOAD situadas encima.
Si carga datos de una base de datos utilizando una sentencia SELECT, no puede usar funciones Qlik Sense
para interpretar los datos en la sentencia SELECT. La solución es añadir una sentencia LOAD, donde
realice la transformación de datos, encima de la sentencia SELECT.
En este ejemplo, interpretamos una fecha almacenada como una cadena utilizando la función de Qlik Sense
Date# en una sentencia LOAD, utilizando la sentencia SELECT anterior como fuente.
LOAD ReferenceDate,
Age(ReferenceDate, BirthDate ) as Age;
LOAD *,
Date(FromDate + IterNo() – 1 ) as ReferenceDate
Resident Policies
While IterNo() <= ToDate - FromDate + 1 ;
1. La representación de cadena siempre está disponible y es lo que muestran los cuadros de lista y los
demás objetos de hoja. El formato de los datos en cuadros de lista (formato numérico) solo afecta a la
representación de cadena.
2. La representación numérica solo está disponible si los datos se pueden interpretar como un número
válido. La representación numérica se utiliza para todos los cálculos numéricos y para la ordenación
numérica.
Si existen varios datos con una misma representación numérica dentro de un campo, serán tratados todos
como el mismo valor y compartirán la primera representación de cadena que se encuentre. Ejemplo: Los
números 1,0, 1 y 1.000 leídos en ese orden tendrán todos la representación numérica 1 y la representación
inicial de cadena 1,0.
Interpretación numérica
Al cargar datos que contienen números, monedas o fechas, se interpretarán de manera diferente según si el
tipo de datos está definido o no. Esta sección describe cómo se interpretan los datos en ambos casos.
Qlik Sense recordará el formato numérico original del campo incluso si se cambia dicho formato numérico
para la medida en los diálogos de Formato numérico del panel de propiedades.
Las configuraciones predefinidas para números y monedas se definen mediante las variables de
interpretación numérica del script o las configuraciones del sistema operativo (Panel de control).
Qlik Sense intenta interpretar los datos introducidos como números, fechas, horas, etc. Siempre y cuando se
utilicen las configuraciones predefinidas del sistema en los datos, Qlik Sense realiza la interpretación y la
presentación del formato automáticamente. El usuario no necesita modificar el script ni ninguna otra
configuración en Qlik Sense.
Por defecto, se utiliza el siguiente esquema hasta conseguir una coincidencia completa. (El formato
predefinido es el formato especificado en el sistema operativo, por ejemplo, para el separador decimal, la
ordenación entre año, mes y día, etc. según su definición en el Panel de control o, en algunos casos,
mediante las variables especiales de interpretación numérica del script.
Al cargar números desde archivos de texto pueden surgir algunos problemas de interpretación, por ejemplo,
un separador decimal o de miles incorrecto puede hacer que Qlik Sense interprete el número de forma
incorrecta. Es conveniente comprobar en primer lugar que las variables de interpretación numérica del script
estén correctamente definidas y que la configuración del sistema en el Panel de control sea adecuada.
Una vez que Qlik Sense haya interpretado los datos como fecha u hora, puede cambiar el formato de fecha u
hora en el panel de propiedades de la visualización.
Puesto que no hay un formato predefinido de datos, es posible que varios registros contengan datos con
distinto formato en un mismo campo. En un campo se pueden encontrar, por ejemplo, fechas, números
enteros y texto válidos. En ese caso, no se aplicará ningún formato a los datos, sino que se mostrarán en su
forma original.
El número de serie de la fecha es el número (valor real) de días transcurridos desde el 30 de diciembre de
1899; es decir, el formato de Qlik Sense es idéntico al sistema de fechas de 1900 utilizado por Microsoft
Excel y otros programas (en el rango comprendido entre el 1 de marzo de 1900 y el 28 de febrero de 2100).
Por ejemplo, 33857 corresponde al 10 de septiembre de 1992. Fuera de este rango, Qlik Sense utiliza el
mismo sistema de fecha ampliado al calendario gregoriano.
El número de serie para los tiempos es un número entre 0 y 1. El número de serie 0,00000 corresponde a
00:00:00, mientras que 0,99999 corresponde a 23:59:59. Los números combinados indican fecha y hora: el
número de serie 2,5 representa el 1 de enero de 1900 a las 12.00 del mediodía.
No obstante, los datos se muestran según el formato de la cadena. De forma predeterminada, se emplean
las configuraciones definidas en el Panel de control. También se puede configurar el formato de los datos a
través de las variables de interpretación numérica del script o con la ayuda de una función de formato. Por
último, también es posible dar nuevo formato a los datos en la hoja de propiedades del objeto de hoja.
Example 1:
y al contrario:
Qlik Sense sigue una serie de reglas para tratar de interpretar fechas, horas y otros tipos de datos. No
obstante, el resultado final se verá afectado por una serie de factores, como ya se ha explicado.
Example 2:
La tabla siguiente muestra las distintas representaciones cuando los datos se leen en Qlik Sense sin la
función especial de interpretación en el script:
Tabla cuando los datos se leen sin la función de interpretación especial en el script
Interpretación por Formato de Formato de Formato de Formato de
Datos
defecto de Qlik fecha 'YYYY- fecha hora número '#
fuente
Sense MM-DD' 'MM/DD/YYYY' 'hh:mm' ##0.00'
La tabla siguiente muestra las distintas representaciones cuando los datos se leen en Qlik Sense usando la
función de interpretación date#( A, 'M/D/YY') en el script:
La expansión siempre comienza con '$(' y termina con ')' y el contenido entre corchetes define cómo se
realizará la sustitución del texto. Para evitar la posible confusión con las macros de script en adelante nos
referiremos a las expansiones de macro como expansiones de signo dólar.
Las expansiones de signo dólar pueden usarse con uno de los siguientes:
l variables
l parámetros
l expresiones
Una expansión de signo dólar está limitada en cuanto a la cantidad de expansiones que puede
calcular. Cualquier expansión superior a 1000 niveles de expansiones anidadas no se
calculará.
$(variablename)
$ (variablename) expande al valor de la variable. Si variablename no existe, la expansión dará como
resultado una cadena vacía.
$(#variablename)
Siempre produce una representación de decimal válida del valor numérico de la variable, posiblemente con
notación exponencial (para números muy grandes/pequeños). Si variablename no existe o no contiene un
valor numérico, se expandirá a 0 en su lugar.
Example:
SET DecimalSep=',';
LET X = 7/2;
La expansión de signo dólar $(X) se expandirá a 3,5 mientras que $(#X) se expandirá a 3.5.
Example:
Set Mypath=C:\MyDocs\Files\;
...
LOAD * from $(MyPath)abc.csv;
Los datos se cargarán desde C:\MyDocs\Files\abc.csv.
Example:
Set CurrentYear=1992;
...
SQL SELECT * FROM table1 WHERE Year=$(CurrentYear);
Las filas con Year=1992 se seleccionarán.
Example:
Set vConcatenate = ;
For each vFile in FileList('.\*.txt')
Data:
$(vConcatenate)
LOAD * FROM[.\file1.txt];
Concatenate LOAD * FROM[.\file2.txt];
Concatenate LOAD * FROM[.\file3.txt];
Example:
Example:
Set MUL='$1*$2';
Set X=$(MUL(3,7)); // devuelve '3*7' en X
Si el número de parámetros formales supera al de parámetros reales sólo se expandirán los parámetros
formales que se correspondan con parámetros reales. Si el número de parámetros reales excede al de
parámetros formales, se ignorarán los parámetros reales supérfluos.
Example:
Set MUL='$1*$2';
Set X=$(MUL); // devuelve '$1*$2' en X
Example:
$(=expression )
La expresión será evaluada y el valor se utilizará en la expansión.
Example:
Inclusión de archivos
Las inclusiones de archivos se realizan utilizando expansiones de signo dólar. La sintaxis es la siguiente:
$(include=filename )
El texto anterior será reemplazado por el contenido del archivo especificado tras el signo igual. Esta
funcionalidad resulta de gran utilidad si desea almacenar scripts o partes de scripts en archivos de texto.
Example:
$(include=C:\Documents\MyScript.qvs);
Nombres de campo
Descripción Símbolo Punto de código Ejemplo
Literales de cadena
Descripción Símbolo Punto de código Ejemplo
En sentencias SELECT
Para una sentencia SELECT interpretada por un driver ODBC, el uso puede variar. Por lo general, debe
utilizar las comillas dobles rectas (Alt + 0034) para los nombres de campos y tablas, y las comillas simples
rectas (Alt + 0039) para los literales y evitar el uso de acentos graves. No obstante, hay algunos drivers
ODBC que no solo aceptan los acentos graves como comillas, sino que los prefieren. En tal caso, las
sentencias SELECT generadas contienen comillas con acentos graves.
l [ ]
l ""
l ``
Literales de cadena:
l ''
Las referencias de campo fuera de contexto y referencias de tabla deberían considerarse como literales y
por lo tanto necesitan comillas simples.
Example:
'Sweden' as Country
Cuando esta expresión se usa como parte de la lista de campo en una sentencia LOAD o SELECT, la
cadena de texto " Sweden" se cargará como valor de campo en el campo Qlik Sense " Country".
Example:
"land" as Country
Cuando esta expresión se utiliza como una parte de la lista de campos en una sentencia LOAD o SELECT,
el contenido del campo de la base de datos o la columna de la tabla denominada " land" se cargará como
valores de campo en el campo Qlik Sense " Country". Esto significa que land se tratará como una referencia
de campo.
Example:
'12/31/96'
Cuando esta cadena se utiliza como parte de una expresión, en un primer paso se interpretará como la
cadena de texto "12/31/96", que a su vez se puede interpretar como una fecha si el formato de fecha es
"MM/DD/YY". En tal caso se almacenará como un valor dual con una representación tanto numérica como
textual.
Example:
12/31/96
Cuando esta cadena se utiliza como parte de una expresión, se interpretará numéricamente como 12
dividida por 31 dividida por 96.
Cualquiera de las comillas siguientes se puede utilizar para citar la cadena completa:
Example:
Example:
Esta cadena se carga como Miguel dijo "Hace un día precioso". Usando el carácter de escape "", el editor de
carga de datos de Qlik Sense entiende qué comillas dobles forman parte de la cadena y qué comillas indican
el final de la cadena. La comilla simple ' utilizada en la abreviatura en inglés It's no es necesario que sea de
escape porque no es el símbolo utilizado para citar la cadena.
Example:
Esta cadena se carga como Michael said "It's a beautiful day". La comilla doble " utilizada en la abreviatura
en inglés para citar lo que Michael dijo no es necesario que sea de escape porque no es el símbolo utilizado
para citar la cadena.
Example:
Esta cadena se carga como Michael said [It's a "beautiful day]. Solo el corchete derecho ] es de escape. Las
comillas simples ' y las comillas dobles " utilizadas en la cadena no necesitan ser de escape, ya que no se
utilizan para citar la cadena.
El símbolo asterisco
El símbolo de asterisco (*) se interpreta como la totalidad de valores de este campo, es decir una lista de
todos los valores que hay en cualquier lugar de esta tabla. Si se usa en uno de los campos de sistema
(USERID, PASSWORD, NTNAME o SERIAL) en una tabla cargada en la sección de acceso del script, se
interpretará como todos los valores posibles (también los no enumerados) de este campo.
OtherSymbol
En muchos casos es necesario representar todos los demás valores de una tabla, es decir, todos aquellos
valores que no se han encontrado explícitamente en los datos cargados. Esto se hace con una variable
especial denominada OtherSymbol. Para definir que OtherSymbol sea tratado como "todos los demás
valores", utilice la sintaxis siguiente:
SET OTHERSYMBOL=<sym>;
antes de una sentencia LOAD o SELECT. <sym> puede ser cualquier cadena.
Si Qlik Sense encuentra el símbolo definido en una tabla interna, lo definirá como todos los valores que no
han sido previamente cargados en el campo donde lo encontró. Los valores encontrados en el campo
después de OtherSymbol se descartarán por tanto.
SET OTHERSYMBOL=;
Example:
Table Customers
CustomerID Name
1 ABC Inc.
2 XYZ Inc.
3 ACME INC
+ Undefined
Table Orders
CustomerID OrderID
1 1234
CustomerID OrderID
3 1243
5 1248
7 1299
Inserte la sentencia siguiente en el script, delante del punto donde se carga la primera tabla superior:
SET OTHERSYMBOL=+;
Cualquier referencia a un CustomerID distinto de 1, 2 o 3, por ej. como cuando se hace clic en OrderID 1299
dará como resultado Undefined en Name.
General
La lógica de Qlik Sense trata lo siguiente como valores NULL reales:
SET NULLDISPLAY=<sym>;
El símbolo <sym> sustituirá todos los valores NULL de la fuente de datos ODBC en el nivel más bajo de
entrada de datos. <sym> puede ser cualquier cadena.
Para restablecer esta funcionalidad a la establecida por defecto, utilice la sintaxis siguiente:
SET NULLDISPLAY=;
El uso de NULLDISPLAY solo afecta a los datos de una fuente de datos ODBC.
Si desea que la lógica de Qlik Sense interprete los valores NULL devueltos desde una conexión ODBC como
una cadena vacía, agregue lo siguiente a su script antes de cualquier sentencia SELECT:
SET NULLDISPLAY=";
Aquí " son dos signos de entrecomillado simple, o comillas simples, sin nada entre ellas.
SET NULLINTERPRET=<sym>;
El símbolo <sym> se debe interpretar como NULL. <sym> puede ser cualquier cadena.
SET NULLINTERPRET=;
Funciones
La regla general es que las funciones devuelven NULL cuando los parámetros caen fuera del rango para el
que se ha definido la función.
Ejemplos
Expresión Resultado
Como resultado de lo anterior, las funciones generalmente devuelven NULL cuando alguno de los
parámetros necesarios para la evaluación es NULL.
Ejemplos
Expresión Resultado
if(NULL, A, B) devuelve B
Ejemplos
Expresión Resultado
Ejemplos
Expresión Resultado
Operadores relacionales
Si NULL se encuentra a cualquier lado de los operadores relacionales se aplican reglas especiales.
Ejemplos
Expresión Resultado
Expresión Resultado
El número de campos y tablas de datos, así como el número de celdas y filas de tabla que se pueden cargar
viene delimitado exclusivamente por la cantidad de RAM.
Formatos numéricos
Para indicar una cantidad específica de dígitos, utilice el símbolo "0" para cada dígito.
Para indicar un posible dígito a la izquierda del punto decimal, use el símbolo "#".
Para marcar la posición del separador de miles o separador decimal, utilice el correspondiente separador de
miles o el separador decimal.
El código de formato se utiliza para definir las posiciones de los separadores. No es posible configurar el
separador en el código de formato. Utilice las variables DecimalSep y ThousandSep para esto en el script.
Se puede usar el separador de miles para agrupar dígitos por cualquier número de posiciones, por ejemplo,
se podría usar una cadena de formato de "0000-0000-0000" (separador de miles = "-") para mostrar un
número de parte de doce dígitos, como "0012-4567-8912".
Examples:
# ##0 describe el número como un entero con un separador de miles. En este ejemplo " " se
utiliza como separador de miles.
0000 describe el número como un entero con, al menos, cuatro dígitos. Por ejemplo, el
número 123 se mostrará como 0123.
0.000 describe el número con tres decimales. En este ejemplo "." se utiliza como separador
decimal.
Formato Para indicar el formato binario, el código de formato debe comenzar por (bin) o (BIN).
binario
Formato octal Para indicar el formato octal, el código de formato debe comenzar por (oct) o (OCT).
Formato Para indicar el formato hexadecimal, el código de formato debe comenzar por (hex) o
hexadecimal (HEX). Si se usa la versión en mayúsculas A-F se usará para dar formato (por ejemplo
14FA). La versión que no va en mayúsculas dará como resultado el formato con a-f (por
ejemplo 14fa). La interpretación funcionará para ambas variantes, sin distinguir entre
mayúsculas y minúsculas en el código de formato.
Formato El uso de (dec) o (DEC) para indicar el formato decimal se permite pero no es necesario.
decimal
Formato de Para indicar un formato en cualquier base entre 2 y 36, el código de formato debe
base comenzar por (rxx) o (Rxx), donde xx es el número de dos dígitos que denota la base que
numérica se utilizará. Si se utiliza el texto R en mayúscula, las letras en bases por encima de 10 se
personalizado escribirán con mayúscula cuando Qlik Sense esté dando formato (por ejemplo, 14FA). La
r que no va en mayúsculas dará como resultado un formato con letras no mayúsculas (por
ejemplo, 14fa). La interpretación funcionará para ambas variantes, sin distinguir entre
mayúsculas y minúsculas en el código de formato. Observe que (r02) es el equivalente de
(bin), (R16) es el equivalente de (HEX), etc.
Formato Descripción
Formato Para indicar números romanos el código de formato debe comenzar por (rom) o (ROM).
romano Si se usa la versión en mayúscula las letras mayúsculas se usarán para dar formato (por
ejemplo MMXVI). La versión que no va en mayúsculas dará como resultado el formato
con letras en minúscula mmxvi. La interpretación funcionará para ambas variantes, sin
distinguir entre mayúsculas y minúsculas en el código de formato. Los números romanos
reciben por lo general un signo menos para indicar los números negativos y 0 representa
cero. Los decimales se ignorarán en el caso del formateado de números romanos.
Examples:
Fechas
Podemos utilizar los siguientes símbolos para dar formato a una fecha. Se podrá emplear cualquier
separador.
Símbolos Descripción
"MMM" denota el nombre corto del mes en letras según lo define el sistema operativo o la
variable del sistema de anulación MonthNames en el script.
"MMMM" denota el nombre largo del mes en letras según lo define el sistema operativo o la
variable del sistema de anulación LongMonthNames en el script.
"W" devolverá el número de día (por ejemplo, 0 para el lunes) como un solo dígito.
"WW" devolverá el número con dos dígitos (por ejemplo, 02 para el miércoles).
"WWW" mostrará la versión corta del nombre del día de la semana (por ejemplo, Lun) según
lo definido por el sistema operativo o por la variable de anulación del sistema DayNames en
el script.
"WWWW" mostrará la versión larga del nombre del día de la semana (por ejemplo, Lunes)
según lo definido por el sistema operativo o por la variable de anulación del sistema
LongDayNames en el script.
Horas
Podemos utilizar los siguientes símbolos para dar formato a una hora. Se podrá emplear cualquier
separador.
h Para describir las horas, use el símbolo "h" para cada dígito.
m Para describir los minutos, use el símbolo "m" para cada dígito.
s Para describir los segundos, use el símbolo "s" para cada dígito.
f Para describir las fracciones de un segundo, use el símbolo "f" para cada dígito.
tt Para describir la hora en formato AM/PM, use el símbolo "tt" después de la hora.
Fecha/Hora
Se emplea la misma notación que la expresada anteriormente para fechas y horas.
Examples: (con el 31 de marzo de 2013 a las 18.30 como fecha y hora a modo de ejemplo):
Los archivos QVD se puede leer en dos modos: estándar (rápido) y optimizado (más rápido). El modo que se
utilice viene determinado de forma automática por el motor de script.
Hay algunas limitaciones con respecto a las cargas optimizadas. Es posible cambiar el nombre de los
campos, pero cualquiera de las operaciones aquí mencionadas deshabilitará la carga optimizada y dará
como resultado una carga estándar.
l Incremental
En muchos casos habituales, la funcionalidad del QVD puede usarse para la carga incremental,
cargando solo los nuevos registros de una base de datos en aumento.
No hay diferencia entre los archivos QVD resultantes con respecto a la velocidad de lectura.
l Cargar un archivo QVD como una fuente de datos explícita. Los archivos QVD se pueden
referenciar mediante una sentencia LOAD en el script, igual que cualquier otro tipo de
archivos de texto (csv, fix, dif, biff, etc).
Por ejemplo:
l LOAD * from xyz.qvd (qvd);
l LOAD Name, RegNo from xyz.qvd (qvd);
l LOAD Name as a, RegNo as b from xyz.qvd (qvd);
l Carga automática de archivos QVD almacenados en el búfer. Cuando utiliza el prefijo buffer
en sentencias LOAD o SELECT no son necesarias sentencias explícitas para la lectura. Qlik
Sense determinará en qué medida utilizará los datos del archivo QVD en lugar de adquirir los
datos utilizando la sentencia LOAD o SELECT original.
l Acceder a archivos QVD desde el script. Se pueden usar varias funciones de script (todas ellas
comenzando por qvd ) para recuperar información diversa sobre los datos encontrados en la
cabecera XML de un archivo QVD.
Formato QVD
Un archivo QVD contiene exactamente una tabla de datos y consta de tres partes:
l Cabecera.
La seguridad se incorpora en el propio archivo, lo que significa que los archivos descargados siempre estarán
protegidos, hasta cierto punto. No obstante, si se requiere una seguridad elevada, se debe evitar la descarga
de archivos y su uso sin conexión; asimismo, los archivos solamente los debe publicar el servidor Qlik Sense.
Como todos los datos se almacenan en un solo archivo, el tamaño de dicho archivo puede llegar a ser
considerable.
La app debe publicarse antes de que se apliquen los controles de acceso a la sección. Recargar la app no
aplicará ningún script de acceso a la sección nuevo o modificado.
Para evitar exponer datos restringidos, elimine todos los archivos adjuntos con la
configuración de sección de acceso antes de publicar la app.
Los archivos adjuntos se incluyen cuando la app se publica. Si la app publicada se copia, los
archivos adjuntos se incluyen en la copia. Sin embargo, si se han aplicado restricciones de
sección de acceso a los archivos de datos adjuntos, la configuración de la sección de acceso
no se conserva al copiarse los archivos, por lo que los usuarios de la app copiada podrán ver
todos los datos en los archivos adjuntos.
Una captura de imagen muestra los datos conforme a los derechos de acceso que posea el
usuario que toma la captura y esta captura puede después compartirse en una historia. No
obstante, cuando los usuarios retornan a una visualización desde una historia para ver los
datos en vivo en la app, se ven restringidos por sus propios derechos de acceso.
No debe asignar colores a los valores de la dimensión maestra si utiliza sección de acceso o
trabaja con datos confidenciales, porque los valores pueden quedar expuestos por la
configuración del color.
Secciones en el script
El control de acceso se gestiona mediante una o varias tablas de seguridad cargadas de la misma manera
que los datos se cargan normalmente en Qlik Sense. Esto permite almacenar las tablas en una base de
datos normal. Las sentencias de script que gestionan las tablas de seguridad se proporcionan en la sección
de acceso, lo que en el script se inicia mediante la sentencia Section Access.
Si se define una sección de acceso en el script, la parte del script que carga los datos de la app deberá
colocarse en una sección distinta, iniciada por la sentencia Section Application .
Example:
Section Access;
LOAD * inline [
ACCESS, USERID
USER, User_ID
];
Section Application;
LOAD... ... from... ...
USERID, y el campo que define el nivel de acceso, ACCESS. Todos los campos de sistema de la sección de
acceso se emplearán para autenticación y autorización. A continuación se describen todos los campos de
sistema de la sección de acceso.
ACCESS
Define el tipo de acceso que debe tener un usuario específico.
El acceso a las apps de Qlik Sense puede autorizarse a determinados usuarios o grupos de usuarios
específicos. En la tabla de seguridad, se puede asignar a los usuarios a los niveles de acceso ADMIN o
USER. Si no se asigna un nivel de acceso válido, el usuario no podrá abrir la app.
Una persona con privilegios de ADMIN tiene acceso a todos los datos de la app. Una persona con privilegios
de USER solo puede acceder a los datos tal como se define en la tabla de seguridad.
Si se utiliza sección de acceso en un escenario de generación de apps (ODAG) bajo demanda en la app de
plantilla, el usuario INTERNAL\SA_API debe incluirse como ADMIN en la tabla de la sección de acceso. Por
ejemplo:
Section Access;
LOAD * inline [
ACCESS, USERID
ADMIN, INTERNAL\SA_API
];
USERID
Contiene una cadena que corresponde a un nombre de usuario de Qlik Sense. Qlik Sense recibirá la
información de inicio de sesión del proxy y la comparará con el valor introducido en este campo.
GROUP
Contiene una cadena que corresponde a un grupo de Qlik Sense. Qlik Sense resolverá el usuario
proporcionado por el proxy con este grupo.
Cuando utilice grupos para reducir datos y desee Qlik Management Console, todavía se
requiere el usuario de la cuenta INTERNAL\SA_SCHEDULER.
OMIT
Contiene el nombre del campo que se debe omitir para este usuario específico. Se puede hacer uso de
comodines y el campo puede dejarse vacío. Una forma sencilla de realizar esto consiste en utilizar un
subcampo.
Le recomendamos que no aplique OMIT en campos clave. Los campos clave que se omiten
están visibles en el visor del modelo de datos, pero el contenido no está disponible, lo que
podría ser confuso para el usuario. Además, aplicar OMIT en campos que se utilizan en una
visualización puede dar como resultado una visualización incompleta para usuarios que no
tengan acceso a los campos omitidos.
Qlik Sense comparará el usuario proporcionado por el proxy con UserID y resolverá el usuario con los grupos
de la tabla. Si el usuario pertenece a un grupo con permiso de acceso, o si el usuario coincide, podrá acceder
a la app.
Si ha quedado bloqueado y no logra acceder a una app mediante la sección de acceso, puede
abrir la app sin sus datos y editar la sección de acceso en el script de carga de datos. Esto
requiere acceso a edición y carga del script de carga de datos.
Como en la sección de acceso también se utiliza la misma lógica interna característica de Qlik Sense, los
campos de seguridad se pueden colocar en diferentes tablas. Todos los campos enumerados en sentencias
LOAD o SELECT en la sección de accesso deben escribirse en MAYÚSCULAS. Convierta cualquier
nombre de campo de la base de datos que contenga letras minúsculas a mayúsculas utilizando la función
Upper antes de que la sentencia LOAD o SELECT lea el campo.
Un carácter comodín, por ejemplo el asterisco (*), se interpreta como todos los valores (incluidos en la lista)
de este campo, es decir, un valor que aparece en otros lugares de la tabla. Si se usa en uno de los campos
de sistema (USERID, GROUP) de una tabla cargada en la sección de acceso del script, se interpretará como
todos los valores posibles (también los no enumerados) de este campo.
Cuando se cargan datos desde un archivo QVD, el uso de la función superior ralentizará la
velocidad de carga.
Example:
En este ejemplo, solo los usuarios del grupo financiero pueden abrir el documento.
Acceso al documento
Acceso Grupo
USUARIO Finanzas
campos con nombres comunes en la sección de acceso y en la sección de la aplicación. Una vez que
el usuario ha iniciado sesión, Qlik Sense tratará de contrastar las selecciones de campos de la sección
de acceso con los campos de la sección de aplicación que tengan exactamente los mismos nombres
de campo (los nombres de los campos deben estar en MAYÚSCULAS). Una vez que el usuario ha
iniciado la sesión, Qlik Sense ocultará de forma permanente todos los datos excluidos por estas
selecciones de la vista del usuario.
Todos los nombres de campo empleados en la transferencia descrita anteriormente y todos los
valores de campo de estos campos deberán ir en mayúsculas, ya que todos los nombres de
campo y los valores de campo se convierten por defecto en mayúsculas en la sección de
acceso.
Si desea habilitar la carga de script en una tarea Qlik Management Console, se requiere el
usuario de la cuenta INTERNAL\SA_SCHEDULER con acceso a ADMIN.
Section Access;
LOAD * inline [
ACCESS, USERID, REDUCTION, OMIT
USER, AD_DOMAIN\ADMIN, *,
USER, AD_DOMAIN\A, 1,
USER, AD_DOMAIN\B, 2, NUM
USER, AD_DOMAIN\C, 3, ALPHA
ADMIN, INTERNAL\SA_SCHEDULER, *,
];
section application;
T1:
LOAD *,
NUM AS REDUCTION;
LOAD
Chr( RecNo()+ord('A')-1) AS ALPHA,
RecNo() AS NUM
AUTOGENERATE 3;
El campo REDUCTION (mayúsculas) existe ahora tanto en la sección de acceso como en la sección de
aplicación (todos los valores de campos van también en mayúsculas). Por lo general, serían dos campos
totalmente diferentes y separados; pero al utilizar la sección de acceso, estos campos se vinculan y se
reduce el número de registros que se muestran al usuario.
El campo OMIT, en la sección de acceso, define los campos que deberían ocultarse del usuario.
El resultado será:
l El usuario ADMIN puede ver todos los campos y solo aquellos registros que otros usuarios pueden ver
en este ejemplo cuando REDUCTION sea 1, 2 o 3.
l El usuario A puede ver todos los campos, pero solo aquellos registros asociados a REDUCTION=1.
l El usuario B puede ver todos los campos excepto NUM y solo aquellos registros asociados a
REDUCTION=2.
l El usuario C puede ver todos los campos excepto ALPHA y solo aquellos registros asociados a
REDUCTION=3.
Section Access;
LOAD * inline [
ACCESS, USERID, GROUP, REDUCTION, OMIT
USER, *, ADMIN, *,
USER, *, A, 1,
USER, *, B, 2, NUM
USER, *, C, 3, ALPHA
USER, *, GROUP1, 3,
ADMIN, INTERNAL\SA_SCHEDULER, *, *,
];
section application;
T1:
LOAD *,
NUM AS REDUCTION;
LOAD
Chr( RecNo()+ord('A')-1) AS ALPHA,
RecNo() AS NUM
AUTOGENERATE 3;
El resultado será:
l Los usuarios que pertenecen al grupo ADMIN pueden ver todos los datos y todos los campos.
l Los usuarios que pertenecen al grupo A pueden ver los datos asociados a REDUCTION=1 en todos
los campos.
l Los usuarios que pertenecen al grupo B pueden ver los datos asociados a REDUCTION=2, pero no
en el campo NUM
l Los usuarios que pertenecen al grupo C pueden ver los datos asociados a REDUCTION=3, pero no
en el campo ALPHA
l Los usuarios que pertenecen al grupo GROUP1 pueden ver los datos asociados a REDUCTION=3 en
todos los campos
l El usuario INTERNAL\SA_SCHEDULER no pertenece a ningún grupo, pero se le permite ver todos
los datos de todos los campos.
El carácter comodín *, en esta fila se refiere solo a todos los valores dentro de la tabla
de la sección de acceso. Si hay valores en la aplicación de sección que no están
disponibles en el campo REDUCTION en la sección de acceso, se reducirán.
Haga lo siguiente:
Donde <PluginConfig> es una lista de elementos de configuración separados por comas que contiene
lo siguiente:
<EngineName>,<Address>[,<PathToCertFile>,<RequestTimeout>,<ReconnectTimeout>]
Tenga en cuenta que el servidor del complemento plugin de la extensión del servidor (SSE)
debe estar ejecutándose antes de iniciar Qlik Sense, de lo contrario no se establecerá la
conexión.
l https://github.com/qlik-oss/server-side-extension
Contiene el protocolo SSE, documentación general y ejemplos escritos en Python y C ++.
l https://github.com/qlik-oss/sse-r-plugin
Contiene un plugin R escrito en C#, solo el código fuente. Debe crear el complemento plugin antes de
poder usarlo.
<PathToCertFile>: Ruta del sistema de archivos a la carpeta que contiene los certificados del cliente
necesarios para la comunicación segura con el complemento plugin. Opcional. Si se omite, se invocará una
comunicación insegura. Esta ruta de acceso solo apunta a la carpeta donde se encuentran los certificados.
Asegúrese de que realmente se copian a esa carpeta. Los nombres de los tres archivos de certificado deben
ser los siguientes: root_cert.pem, sse_client_cert.pem, sse_client_key.pem. Únicamente se permite
autenticación mutua (autenticación cliente y servidor).
Examples:
l Ejemplo donde se define un servidor de complementos plugin SSE sin ruta de certificado, pero con
tiempos de espera configurados: SSEPlugin=SSEPython,localhost:50051,,0,20
Las apps a demanda amplían y mejoran los posibles casos de uso de las técnicas de descubrimiento de
datos, permitiendo a los usuarios de negocio efectuar análisis asociativos en fuentes de datos muy extensas.
Permiten a los usuarios seleccionar primero los datos de los que deseen obtener más conocimientos y
generar después de forma interactiva una app a demanda con la que analizar los datos con todas las
capacidades completas en memoria de Qlik.
Las apps se pueden generar una y otra vez desde la app de plantilla de forma repetida para permitir un buen
seguimiento de conjuntos de datos que cambian con frecuencia. Mientras los datos se filtran conforme a las
selecciones realizadas en la app de selección, el contenido de la app a demanda se carga dinámicamente
desde el origen de datos subyacente. La misma app a demanda puede generarse múltiples veces para hacer
nuevos análisis de los datos a medida que estos cambian.
Una app de selección se puede vincular a varias apps de plantilla y una única app de plantilla puede
vincularse mediante varias apps de selección. Pero las expresiones de enlace de datos de la app de plantilla
deben corresponderse con campos de las apps de selección que estén vinculados con la misma. Por esa
razón, las apps de selección y de plantilla tienden a crearse de forma conjunta y, a menudo, por el mismo y
experimentado redactor de script.
Crear enlaces de navegación también requiere una buena comprensión de los campos de la app de selección
que tienen sus correspondientes enlaces en la app de plantilla. Esto se debe a que cada enlace de
navegación requiere una expresión que calcule el número total de registros de detalle. Ese total representa
los registros agregados accesibles a través del estado de selección en la app de selección. Para crear esa
expresión, es necesario que el usuario sepa cómo calcular el recuento total de registros de la app de plantilla
usando los campos disponibles en la app de selección.
El uso de apps de selección para generar aplicaciones a demanda no requiere que el usuario entienda el
script de carga. Una vez que se ha creado un enlace de navegación de app a demanda, un usuario puede
arrastrar ese enlace de navegación hacia la barra de navegación de app de la App de selección para crear
un punto de navegación de la app. Las apps a demanda se generan entonces en el punto de navegación de
la app.
Los puntos de navegación están disponibles para la generación de apps a demanda cuando el cálculo de filas
máximo de la expresión en el enlace de navegación se encuentra dentro del rango requerido. En ese punto,
el usuario puede generar una app a demanda. El usuario también puede hacer otro conjunto de selecciones y
generar apps adicionales basadas en esas selecciones diferentes.
Los enlaces de navegación tienen un límite en el número de apps a demanda que se pueden generar desde
el enlace. Cuando se ha generado el número máximo de apps, el usuario que está generando apps desde el
punto de navegación debe eliminar una de las apps existentes antes de generar una nueva app a demanda.
El número máximo de apps generadas se aplica al enlace de navegación de la app a demanda. Si se crea un
punto de navegación de app a demanda desde el enlace de navegación, entonces ese punto de navegación
podría crear hasta el número máximo. Cuando se crean varios puntos de navegación desde el mismo enlace
de navegación, esos puntos de navegación están limitados al número máximo establecido para el enlace de
navegación.
Los enlaces de navegación también establecen un tiempo de retención para las apps generadas. Las apps a
demanda se eliminan automáticamente al expirar su período de retención.
En muchos casos, los usuarios solo utilizan apps generadas a demanda. Cada app generada se puede
publicar por separado. De hecho, el enlace de navegación de la app puede especificar que las apps
generadas a partir de ella se publiquen automáticamente en un stream específico. A continuación, los
usuarios exploran los segmentos seleccionadas de datos cargados con las apps generadas a demanda en el
stream en el que se ha publicado la app.
l Proporcionan a los usuarios una experiencia tipo "lista de la compra" que les permite poblar sus
aplicaciones interactivamente con un subconjunto de datos, tales como período de tiempo, segmento
de cliente o geografía.
l Proporcionan funcionalidad completa Qlik Sense a un subconjunto latente alojado en la memoria.
A diferencia de esto, Direct Discovery, que también puede administrar grandes fuentes de datos, no
mantiene todos los datos relevantes en la memoria. Con Direct Discovery, los datos de la medida
residen en la fuente hasta la ejecución.
l Permiten que el personal TI controle la magnitud de una app e invoquen aplicaciones basadas en el
volumen de datos o en las selecciones dimensionales.
l Proporcionan acceso a fuentes de datos que no sean SQL, como Teradata Aster, MapR, SAP BEx, y
la función PLACEHOLDER en SAP HANA.
La realización de consultas no SQL está en contraste con Direct Discovery, que solo se puede utilizar
con orígenes de datos SQL.
l Permiten SQL personalizable y generación de script de carga.
l Permiten acceso de sección en todos los casos.
5.5 Limitaciones
No puede usar Qlik NPrinting con apps bajo demanda.
SUM(1) AS TOTAL_LINE_ITEMS ofrece una forma de medir con precisión el número total de líneas de
pedido de venta para cada combinación distinta de región, trimestre y categoría de producto. Cuando se crea
un enlace para producir apps a demanda, se debe proporcionar una expresión de medida como forma de
controlar el número de registros cargados en las aplicaciones a demanda. En el ejemplo SALE_DETAIL,
cuando un usuario selecciona múltiples categorías de productos, regiones y/o trimestres, se puede calcular
una suma para que TOTAL_LINE_ITEMS determine si la selección supera o no el límite de registro para la
app a demanda.
Los límites de registro se especifican cuando la app de selección se vincula a una app de plantilla para crear
un enlace de navegación de app. Cada enlace de navegación de app tiene un límite de registros. Se pueden
crear múltiples enlaces de navegación desde la app de selección. Normalmente los enlaces de navegación
de apps múltiples se crean enlazando una app de selección con distintas apps de plantilla a fin de producir
múltiples vistas de los datos.
Los enlaces de navegación de app a demanda individuales se pueden incluir en una app de selección para su
publicación. Una vez incluido en la app de selección, un enlace de navegación de app se utiliza para crear
uno o más puntos de navegación de app que permiten a los usuarios de hojas específicas crear apps a
demanda basadas en la app de plantilla de ese enlace.
La app de plantilla normalmente se conecta a la misma fuente de datos que la app de selección. El script de
carga de una app de selección generalmente carga datos agregados para reducir los volúmenes de datos y al
mismo tiempo ofrece visualizaciones interactivas de dimensiones y medidas importantes. El script de carga
de una app de plantilla utiliza consultas que cargan un subconjunto controlado de datos más granulares.
Una app de plantilla a demanda no carga los datos directamente. Si intenta cargar datos desde
la app de plantilla, se producirá un error. La conexión de la app de plantilla debe ser válida, pero
para probar si la conexión funciona correctamente debe generar una app a demanda. Cuando
se genera una app a demanda, el servicio de apps a demanda modifica la secuencia del script
de carga para cargar el estado de selección de la app de selección a demanda. Si la app a
demanda se genera sin errores, entonces sabrá que la conexión en la app de plantilla funciona
correctamente.
$(od_FIELDNAME)
El prefijo od_ se utiliza para vincular el estado de selección de la app de selección con el script de carga de la
app a demanda, el cual se crea al copiar la app de la plantilla. La parte de la expresión de enlace de datos
que sigue al prefijo od_ debe ser un nombre que coincida con un campo en la app de selección. Cuando se
genera la app a demanda, el estado de selección actual de la app de selección se usa para obtener los
valores deseados para enlazar para cada campo. Cada instancia de una expresión $(od_FIELDNAME) en
el script de carga de la app a demanda recién creada se reemplaza por la lista de valores seleccionados para
el campo correspondiente en el estado de selección de la app de selección.
Para ser una sintaxis SQL válida, la sentencia SELECT de la app de plantilla para filtrar por múltiples
valores debe usar una cláusula IN. La práctica recomendada es escribir una subrutina para crear la claúsula
WHERE correcta:
SUB ExtendWhere(Name, ValVarName) LET T = Name & '_COLNAME'; LET ColName = $(T); LET Values =
$(ValVarName); IF len(Values) > 0 THEN IF len(WHERE_PART) > 0 THEN LET WHERE_PART = '$(WHERE_PART)
AND $(ColName) IN ( $(Values) )'; ELSE LET WHERE_PART = ' WHERE $(ColName) IN ( $(Values) )'; ENDIF
ENDIF END SUB;
Antes de llamar a la subrutina ExtendWhere debe establecer la variable WHERE_PART.
FOR EACH fldname IN 'ORIGIN', 'DEST', 'YEAR', 'QUARTER', 'ORIGIN_STATE_ABR', 'DEST_STATE_ABR' LET
vallist = $(fldname); WHEN (IsNull(vallist)) LET vallist = ''; IF len(vallist) > 0 THEN CALL
ExtendWhere('$(fldname)','vallist'); ENDIF NEXT fldname
La lista de nombres de campo debe coincidir con los nombres de los campos utilizados en cada enlace de
campo creado.
Una vez que se ha generado la lista de valores para cada campo, se puede escribir una sentencia SELECT.
Por ejemplo:
Evite utilizar los nombres de campos del modelo de app de plantilla cuando cree variables de
enlace de apps a demanda. Las variables definidas en el script están disponibles en el modelo
de app de plantilla al que se hace referencia al crear visualizaciones de datos. La elección de
variables de enlace de apps a demanda que no se solapen con los campos del modelo evitará
confundir de forma no intencionada entre los campos del modelo de la app de plantilla y las
variables de vinculación de apps a demanda en el script de carga de datos. Una buena práctica
es establecer un prefijo para variables de vinculación de apps a demanda. Por ejemplo, use X_
ORIGIN en vez de ORIGIN.
Una vez que el motor y la fuente de datos se han configurado para SSO, la app de plantilla debe habilitar
SSO agregando la sintaxis siguiente al script de la app de plantilla:
///!ODAG_SSO
El servicio On-Demand App Service analiza el script cuando se genera una app a demanda y cada vez que se
vuelve a cargar.
Cuando una app a demanda se carga con SSO,la identidad del usuario final se envía a la fuente de datos. El
usuario final debe tener acceso a las fuentes utilizadas en las conexiones de datos de la app de plantilla.
Solo se cargan los datos a los que el usuario tiene acceso en esas fuentes, incluso si se selecciona un
conjunto de datos más grande.
Las apps a demanda generadas a partir de apps de plantilla que se usan single sign-on (SSO)
no se pueden publicar.
La forma básica de las expresiones de enlace--$(od_FIELDNAME) --se puede modificar para refinar las
selecciones y asegurarse de que la app de plantilla cargue los datos correctamente.
Las apps de plantilla creadas originalmente con la extensión Qlik Sense para On-demand App
Generation deben cambiarse para utilizar el enfoque ilustrado a continuación para enlazar una
gran cantidad de selecciones de un campo.
Primero debe crear una subrutina de script para procesar una tabla INLINE.
Las llamadas a la subrutina BuildValueList deben utilizar valores específicos para el parámetro
QuoteChrNum. Cuando el campo procesado por la subrutina es numérico, el parámetro debe
fijarse en 0. Para los datos de caracteres, el parámetro debe fijarse en 39.
El enlace debe escribirse utilizando una tabla INLINE para crear una estructura para los valores de campo
que se cargarán independientemente del número de valores.
SET ORIGIN=''; OdagBinding: LOAD * INLINE [ VAL $(odso_ORIGIN){"quote": "", "delimiter": ""} ]; SET
ORIGIN_COLNAME='ORIGIN'; CALL BuildValueList('ORIGIN', 'OdagBinding', 'VAL', 39);
La expresión $(od_ORIGIN) {"quote": "", "delimiter": "") será reemplazada por una lista de valores de campo
ORIGIN desde la app de selección, separados por saltos de línea. Si el campo ORIGIN contiene los tres
valores BOS, JFK, ORD, entonces la tabla expandida INLINE presentará el siguiente aspecto:
SET ORIGIN=''; OdagBinding: LOAD * INLINE [ VAL BOS JFK ORD ]; SET ORIGIN_COLNAME='ORIGIN'; CALL
BuildValueList('ORIGIN', 'OdagBinding', 'VAL', 39);
El valor de la variable ORIGIN que sigue a la llamada a BuildValueList será:
'BOS','JFK’,'JFK'
Si bien la selección de valores de REGION_NAME ocasiona que esos valores se coloquen en el estado
seleccionado, los valores de REGION_CODE están solo en el estado opcional, es decir, blanco en lugar de
verde. Además, si el diseño de las hojas de la app de selección excluye REGION_CODE de su conjunto de
paneles de filtrado, no hay forma de que la expresión de enlace $(od_REGION_CODE) en el script de la app
a demanda se expanda a la lista de regiones seleccionadas, porque los valores REGION_CODE nunca se
seleccionarán realmente, es decir, nunca se volverán de color verde.
Para manejar esta situación, existe una sintaxis adicional que controla con mayor precisión qué valores de
estado de selección se utilizan en cada enlace de datos. El prefijo od_ en la parte del nombre de campo en
cada expresión de enlace a demanda puede incluir una combinación de letras para indicar si los valores que
se utilizarán en el enlace son los tomados del estado seleccionado y del estado opcional. Las combinaciones
válidas, usando el ejemplo REGION_CODE, son:
En el caso de la app a demanda para el ejemplo de datos de ventas, la siguiente expresión de enlace de
datos garantiza que o bien los valores seleccionados o los opcionales de REGION_CODE sean incluidos en
el enlace REGION_CODE:
$(odso_REGION_CODE)
Para manejar esta situación, hay un sufijo de sintaxis que se puede agregar al final de la parte FIELDNAME
de la expresión de enlace para obligar al enlace de campo a que utilice valores numéricos desde la app de
selección en lugar de valores de cadena de texto. El sufijo es _n como en la siguiente cláusula WHERE:
$(od_YEARQUARTER)[2]
El punto de navegación de la app a demanda en la app de selección permanecerá deshabilitado siempre que
no haya exactamente dos valores de YEARQUARTER seleccionados. Aparecerá un mensaje para indicar
que deben seleccionarse exactamente dos valores de YEARQUARTER.
Las restricciones en cuanto a la cantidad de selección crean un enlace de requisito previo entre la app de
selección y la app a demanda. Esto es diferente de las expresiones de enlace que no usan restricciones de
cantidad. Por ejemplo, cuando el script de la app de plantilla contiene una expresión de enlace sin una
restricción de cantidad, como en:
$(od_MYFIELD)
no hay ningún requisito en cuanto a que la app de selección contenga un campo llamado MYFIELD ni que
haya ningún valor seleccionado de ese campo si existe. Si la app de selección no contiene un campo
denominado MYFIELD o si el usuario simplemente no hace ninguna selección, el punto de navegación de la
app a demanda aún puede habilitarse cuando se realicen otras selecciones para cumplir con la condición de
valor límite de registro.
$(od_MYFIELD)[1+]
ahora hay dos requisitos aplicados a la app de selección:
Este tipo de expresión de enlace debe usarse con cuidado porque limita qué apps de selección se pueden
usar con la app de plantilla. No debe usar esta restricción de cantidad en los enlaces de una app de plantilla a
menos que esté seguro de que desea imponer ese requisito de cantidad de selección en todas las apps de
selección que enlacen con esa app de plantilla.
Para efectuar el proceso de enlace de datos, el servicio de apps a demanda utiliza un método de sustitución
de cadenas que es insensible a los comentarios en el script. Esto significa que no debe utilizar expresiones
de enlace en los comentarios a menos que desee que esos comentarios contengan la lista de valores
enlazados tras la generación de la app.
También se pueden hacer otras restricciones en cuanto a cantidad. La tabla siguiente resume las diferentes
combinaciones que se pueden hacer en cuanto a restricciones en la cantidad de selección.
|Enero|;|Febrero|;|Marzo|
Los valores predeterminados para los caracteres de entrecomillado y delimitador funcionan para la mayoría
de bases de datos SQL estándar. Pero podrían no funcionar para algunas bases de datos SQL y no
funcionan en el caso de numerosas fuentes de datos dinámicas como NoSQL y REST. Para esas fuentes, es
necesario agregar esta expresión de enlace a fin de cambiar los caracteres de entrecomillado y delimitador.
Además, si alguno de los campos enlazados contiene comillas simples, debe agregar un comando
Reemplazar a la instrucción LOAD que agregará una comilla simple adicional después de cada comilla
simple en el valor. Esto evita que los caracteres de comillas se interpreten como el final de la cadena que se
usa en la cláusula WHERE. Tenga en cuenta que los productos de bases de datos pueden usar diferentes
técnicas para huirde las comillas simples.
Por ejemplo:
Para construir una app a demanda, deben crearse primero las apps de selección y de plantilla que se puedan
vincular. Para vincularlas, las apps de selección y plantilla deben tener campos de datos en común que se
puedan vincular.
Una app de selección se puede vincular a varias apps de plantilla y una única app de plantilla puede
vincularse mediante varias apps de selección. Pero las expresiones de enlace de datos de la app de plantilla
deben corresponderse con campos de las apps de selección que estén vinculados con la misma.
Un enlace de navegación de una app a demanda une una app de selección con una app de plantilla. Los
enlaces de navegación de apps a demanda se crean en apps de selección. Una vez que se ha definido un
enlace de navegación, se puede agregar a la barra de Navegación de la app de la app de selección como
un punto de navegación de la app a demanda. Cada hoja de una app contiene su propia barra de
Navegación de app . A continuación, los usuarios pueden generar apps a demanda desde el punto de
navegación de la app.
Se pueden generar múltiples apps a demanda, cada una con una combinación diferente de datos
seleccionados, desde el mismo punto de navegación de la app.
Se pueden agregar punteros a un solo enlace de navegación de apps a múltiples hojas en la misma app de
selección. Además, las hojas pueden tener varios puntos de navegación de app, creados a partir de múltiples
enlaces de navegación de app.
Cuando una app de selección está completa con enlaces y puntos de navegación, se pueden generar apps a
demanda.
Haga lo siguiente:
desde el mismo enlace de navegación, entonces el número total de apps a demanda generadas
desde esos puntos de navegación se limita a lo configurado en Número máximo de apps
generadas.
9. Introduzca un valor numérico en el campo Tiempo de retención que defina el tiempo que las apps
generadas desde el enlace de navegación deban conservarse antes de ser eliminadas.
10. En el menú desplegable a la derecha del campo Tiempo de retención , seleccione la unidad de
tiempo para el período de retención.
Las opciones para el tiempo de retención son horas, días o Nunca expira .
Todas las apps a demanda generadas desde el enlace de navegación se conservarán de acuerdo con
esta configuración. La edad de una app a demanda generada es la diferencia entre la hora actual y la
hora de la última carga de datos. Este cálculo de la edad de una app a demanda es el mismo para
apps publicadas y no publicadas. Y si una app a demanda se publica manualmente después de haber
sido generada, el cálculo de edad sigue siendo el mismo: se basa en la última carga de datos de la
app generada.
11. En el menú desplegable Vista predeterminada al abrir , seleccione la hoja que se mostrará primero
cuando se abran las apps generadas desde el enlace de navegación.
Puede seleccionar la Vista general de apps o una de las hojas de la app de selección desde la que
se crea el enlace de navegación.
12. Seleccione un stream en el menú desplegable Publicar en donde se publicarán las apps generadas
desde el enlace de navegación.
Debe tener permiso para publicar en el stream seleccionado. Si no tiene privilegios de publicación en
el stream seleccionado, los intentos de generar apps a demanda desde el enlace de navegación
fallarán.
Al seleccionar un stream para publicar apps generadas, debe asegurarse de que los usuarios de la
app a demanda tengan privilegios de lectura en el stream.
También puede seleccionar No publicado (guardado en el área de trabajo) para guardar las
apps generadas en el área de trabajo de los usuarios sin publicarlas.
Si los usuarios anónimos pueden usar una app de selección publicada, los enlaces de
navegación de apps a demanda deben configurarse para publicar en un stream al a que
puedan acceder los usuarios anónimos. Si las apps a demanda generadas a partir del
enlace de navegación no se publican automáticamente, los usuarios anónimos recibirán
un mensaje de error cuando intenten generar esas apps.
13. Haga clic en Crear y el nuevo enlace de navegación de la app a demanda aparecerá en la lista de
Enlaces de navegación de la app .
14. Arrastre el enlace de navegación de la app a demanda a la barra Navegación de app de la app de
selección.
Arrastrar el enlace de navegación de la app a la app de selección crea un punto de navegación de la
app a demanda. Las propiedades del nuevo punto de navegación de la app a demanda se muestran
en el panel situado a la derecha. Si lo desea ahí puede cambiar el nombre del punto de navegación.
15. Haga clic en Hecho en el editor de hojas.
La app de selección a demanda ya está lista para utilizarse o publicarse. Los usuarios de la app de
selección podrán generar apps a demanda desde los puntos de navegación en la barra de
Navegación de app en la app de selección.
Las vistas dinámicas le permiten consultar y ver subconjuntos relevantes de grandes conjuntos de datos en
gráficos que se pueden actualizar dinámicamente a medida que se realizan las selecciones. Esto permite
unas visualizaciones actualizadas para un extenso volumen de datos o unos escenarios de datos que
cambian rápidamente.
l Vistas dinámicas: Un mecanismo agregado a las aplicaciones base que se conectan a las apps de
plantilla y que permite a los creadores de apps agregar visualizaciones maestras desde la app de
plantilla a la app base.
l Apps de plantilla con vistas dinámicas: Una app de Qlik Sense que contiene conexiones a fuentes de
datos, como bases de datos en la nube.
l Gráficos dinámicos: Visualizaciones maestras en la app de plantilla en vista dinámica que se pueden
agregar a las aplicaciones base y que los usuarios pueden actualizar manualmente.
La app de plantilla y la app base no necesitan usar los mismos datos. Si tiene un conjunto de datos que cubre
las compras de los clientes, puede agregar una vista dinámica a una app de plantilla que contenga datos
meteorológicos para ver las correlaciones.
Si los datos consultados desde el origen de la app de plantilla se pueden filtrar utilizando valores en su app
base, puede usar expresiones vinculantes en el script de la app de plantilla. Esto permite que la vista
dinámica solo consulte un subconjunto de datos específicamente relacionados con las selecciones en la
aplicación base de las fuentes de datos de la app de plantilla. Por ejemplo, puede vincular el campo
SalesDate en la aplicación base al campo DailyTemperatureReadingDate de la app de plantilla.
Esta capacidad de subconjunto es útil si su aplicación base contiene datos agregados y los datos de la vista
dinámica provienen de la misma fuente pero son más granulares que los datos de la aplicación base (por
ejemplo, la aplicación base contiene ventas por mes y marca del producto, mientras que la app de plantilla
contiene ventas por día y nombre del producto). Para más información sobre cómo agregar expresiones de
enlace a apps de plantilla, vea Expresiones de enlace en apps de plantilla a demanda (page 193).
Las vistas dinámicas se pueden usar con cualquier tipo de datos. Las vistas dinámicas son particularmente
útiles cuando se trata de grandes volúmenes de datos o escenarios de datos que cambian rápidamente,
donde es mejor realizar agregaciones de datos en la base de datos. Esto ayuda a evitar la latencia en las
transferencias de datos desde la fuente de datos.
Se puede acceder a las vistas dinámicas desde el panel de Activos. Las vistas dinámicas las habilitan los
administradores en la consola QMC. Para más información sobre cómo habilitar las vistas dinámicas, vea
Administrar las apps on-demand.
Las vistas dinámicas son similares a la generación de apps bajo demanda. Ambas usan apps de plantilla
para ofrecer datos a demanda, pero las vistas dinámicas permiten usar gráficos individuales en hojas en
lugar de generar apps completas a demanda. Si también está utilizando aplicaciones a demanda, puede
crear vistas dinámicas usando sus apps de plantilla a demanda. Para más información sobre generar apps
bajo demanda, vea Gestionar grandes fuentes de datos big data con apps a demanda (page 187).
Vistas dinámicas
Cuando crea una vista dinámica, selecciona una app de plantilla y, opcionalmente, aplica una expresión de
límite de filas para controlar la cantidad de datos a los que accederá la vista dinámica. Una vez que la vista
dinámica se ha creado, puede agregar visualizaciones maestras desde la app de plantilla a sus hojas.
Múltiples vistas dinámicas pueden usar la misma app de plantilla. Cada vista dinámica se actualiza
individualmente. Si se utilizan expresiones de enlace en el script de la app de plantilla de una vista dinámica,
las selecciones realizadas en la aplicación base pueden controlar qué datos se cargan en cada vista dinámica
que usa esa app de plantilla. Se pueden usar dos vistas dinámicas que utilicen la misma plantilla para
comparar gráficos uno junto al otro de dos subconjuntos separados de datos granulares. Por ejemplo, si tiene
dos vistas dinámicas que utilizan la misma app de plantilla, puede seleccionar el 1 de enero de 2018 desde el
campo SaledDate de la aplicación base y actualizar una vista dinámica. Luego podría cambiar la selección al
1 de enero de 2019, actualizar la otra vista dinámica y después comparar ambos gráficos dinámicos.
Cuando un usuario accede a una app que contiene una vista dinámica, se agrega una app bajo demanda a
su Trabajo . Esta app contiene la app de plantilla de vista dinámica con los datos actuales y se utiliza para
rellenar la app base con la vista dinámica. Se reemplaza por una nueva versión cada vez que se actualiza la
vista dinámica. Si el usuario no es el propietario de la app de plantilla de vista dinámica, se eliminará el script
de carga. Estas apps se eliminan 24 horas después de la última actualización.
Si desea información sobre cómo crear y editar vistas dinámicas, vea Administrar datos con vistas
dinámicas (page 202).
Si desea información sobre cómo usar las vistas dinámicas, vea Usar vistas y gráficos dinámicos (page
207).
Las plantillas de vista dinámica pueden tener un script de carga que contiene expresiones de enlace de datos
utilizadas para formular consultas realizadas en las fuentes de datos en función de las selecciones
efectuadas en la aplicación base. Las expresiones de enlace generalmente son creadas por usuarios con
experiencia en escribir scripts de carga en Qlik Sense. Las apps de plantilla pueden tener condiciones de
filtro de consultas que se basan en los parámetros de entrada suministrados durante la activación de gráficos
dinámicos.
Una vez que se completa el modelo de datos de una app de plantilla con vista dinámica, se pueden agregar
visualizaciones maestras a la app de plantilla. Se puede acceder a esas visualizaciones maestras a través de
vistas dinámicas y agregarlas como gráficos dinámicos en otras aplicaciones.
Si desea información sobre cómo crear apps de plantilla, vea Crear una app de plantilla a demanda (page
191).
Gráficos dinámicos
Los gráficos dinámicos derivan de los gráficos maestros de una app de plantilla que incorpora vistas
dinámicas. Se pueden agregar gráficos dinámicos a las hojas de otras apps usando las vistas dinámicas. A
diferencia de otros gráficos de Qlik Sense, los usuarios pueden controlar cuándo se actualizan los datos de
origen en una vista dinámica utilizando una opción de actualización en los gráficos. Cuando los datos de una
vista dinámica se controlan mediante expresiones de enlace, Qlik Sense realiza un seguimiento del estado
de selección de la aplicación base. Un icono de datos obsoletos aparece en cada gráfico de una vista
dinámica cada vez que cambia el estado de selección de la aplicación base, de modo que el nuevo valor se
establece para y fuera de los campos vinculados de la vista dinámica que ya no coinciden con los valores
utilizados para la última actualización de la vista.
Si desea información sobre cómo usar los gráficos dinámicos, vea Usar vistas y gráficos dinámicos (page
207).
l Las vistas dinámicas no son compatibles con las historias. Puede agregar capturas de imagen de
gráficos dinámicos a las historias, pero no puede usar ir a la fuente con un gráfico dinámico.
l Las vistas dinámicas no son compatibles con Qlik NPrinting.
l Las vistas dinámicas son compatibles con el panel de control y las extensiones del paquete de
visualizaciones. No se admiten otras extensiones.
l La propiedad de las vistas dinámicas no cambia con la propiedad de la app.
l Las vistas dinámicas no se pueden crear en apps de un espacio administrado.
l No puede exportar gráficos dinámicos como PDF.
Los usuarios con acceso a una app con una vista dinámica pueden usar la vista dinámica incluso si no tienen
acceso a la app de plantilla.
Las vistas dinámicas no se pueden agregar a las apps publicadas. Las apps se pueden duplicar y volver a
publicar para agregar nuevas vistas dinámicas.
Haga lo siguiente:
Si tiene permisos de edición en la app de plantilla, puede editar el gráfico maestro en el que se basa el
gráfico dinámico.
Para editar un gráfico dinámico, seleccione un gráfico dinámico mientras la hoja está en la vista Editar y
seleccione Editar app de origen . La app de plantilla en vista dinámica.
Haga lo siguiente:
Para acceder a un menú contextual con las opciones del gráfico, como tomar capturas de imagen y abrir el
menú de exploración, haga clic con el botón derecho en el gráfico y seleccione Gráfico dinámico .
Puede interactuar con la vista dinámica mediante los gráficos dinámicos. Al hacer clic con el botón derecho
en un gráfico dinámico y seleccionar Vista dinámica , puede actualizar los gráficos, ver las restricciones y ver
los valores de los campos de enlace de la vista dinámica utilizados en la última actualización de la vista
dinámica.
Si las expresiones de enlace están en la app de plantilla con la vista dinámica, las selecciones realizadas en
la app base afectarán a los datos cargados en una vista dinámica cuando se actualice la próxima vez. Qlik
Sense realiza un seguimiento del estado de selección que existía en la última actualización de cada vista
dinámica. Los datos de la vista dinámica se consideran obsoletos cuando las selecciones cambian los valores
utilizados por cualquiera de los campos vinculados en la vista dinámica desde la última vez que se actualizó
la vista dinámica. Se mostrará un icono de datos obsoletos en todos los gráficos de una vista dinámica
cuando los datos estén obsoletos. La actualización de un gráfico obsoleto actualiza todos los gráficos de la
vista dinámica utilizando los conjuntos de valores seleccionados actualizados para cada uno de los campos
vinculados de la vista. Si desea restaurar el estado de selección de la app base para que coincida con lo que
era cuando la vista dinámica se actualizó por última vez en lugar de actualizarla, utilice el menú contextual en
cualquiera de los gráficos de esa vista dinámica y seleccione Vista dinámica , Mostrar últimas
selecciones y haga clic en Aplicar .
Si alguna de las restricciones no se ha cumplido para una vista dinámica, por ejemplo, si las selecciones
actuales dan como resultado un número de filas que excede el recuento máximo de filas, no se mostrarán
datos para ninguno de los gráficos de esa vista. No es posible actualizar la vista dinámica hasta que el estado
de selección de la aplicación base cambie para que se cumplan todas las restricciones.
Actualizar muestra la última vez que se actualizaron los datos en la vista dinámica.
Las restricciones muestran las restricciones de campos y filas aplicadas para generar contenido desde la
vista dinámica.
Selecciones muestra las selecciones que se aplicaron para generar datos para esta vista. Si hace nuevas
selecciones que cambiarían los datos en la vista dinámica y no ha actualizado su vista dinámica, puede hacer
clic en Aplicar para restaurar las selecciones originales de la vista dinámica.
Únicamente puede ver conexiones de datos de su propiedad, o para las que disponga de
derechos de acceso. Póngase en contacto con su administrador de sistemas de Qlik Sense
para solicitar acceso, si lo necesita.
Muchos de los conectores que acceden a estas fuentes de datos vienen incorporados en Qlik Sense,
mientras que otros se pueden añadir. Cada tipo de conexión de datos contiene parámetros específicos que
hay que configurar.
Adjuntar archivos
Adjunte archivos de datos directamente a su app mediante arrastrar y soltar.
Qlik DataMarket
Seleccione datos climáticos y demográficos actuales e históricos, tipos de cambio de divisas, así como datos
empresariales, económicos y sociales.
Conecte con una fuente de datos ODBC mediante conectores de bases de datos preconfigurados ODBC.
l Amazon Redshift
l Apache Drill (Beta)
l Apache Hive
l Apache Phoenix (Beta)
l Apache Spark (Beta)
l Azure SQL
l Cloudera Impala
l Google BigQuery
l IBM DB2
l Microsoft SQL Server
l MongoDB (Beta)
l MySQL Enterprise
l Oracle
l PostgreSQL
l Presto
l Sybase ASE
l Snowflake
l Teradata
Essbase
Conecte con un conjunto de datos Essbase.
Conecte con un sistema gestor de bases de datos (DBMS) mediante ODBC. Instale un driver ODBC para el
DBMS en cuestión y cree una fuente de datos DSN.
REST
Conecte con una fuente de datos REST . El conector REST no está adaptado específicamente para una
fuente de datos REST y puede usarse para conectar con cualquier fuente de datos expuesta mediante la
REST API.
Salesforce
SAP
Archivos web
l Amazon S3
l Azure Storage
l Dropbox
l Google Drive
Conectores de terceros
Con conectores de terceros puede conectarse a fuentes de datos que no sean admitidas directamente por
Qlik Sense. Los conectores de terceros se desarrollan mediante el QVX SDK o son suministrados por
desarrolladores externos. En una instalación estándar de Qlik Sense puede que no tenga ningún conector de
terceros disponible.
En Qlik Sense Desktop todas las conexiones se guardan en la app sin cifrar.
Puesto que las conexiones de Qlik Sense Desktop no almacenan ningún detalle relativo a
nombre de usuario, contraseña y la ruta del archivo que especificó al crear la conexión, estos
datos almacenados están disponibles en texto plano si comparte la app con otro usuario. Este
hecho debe tenerse en cuenta cuando se diseñe una app que vaya a compartirse.
6.4 Limitaciones
No es posible nombrar una conexión de datos 'DM'. Este nombre se reserva para el conector incorporado de
Qlik DataMarket.
Formatos de archivo
Hay varios formatos de archivos de datos compatibles:
l Archivos de texto: Los datos en los campos deben ir separados por delimitadores como comas,
tabuladores o puntos y coma. Por ejemplo: archivos de variables separados por comas (CSV).
l Tablas HTML.
l Archivos Excel: No puede cargar datos de archivos de Excel protegidos con contraseña. Para más
información, vea Cargar datos desde hojas de cálculo de Microsoft Excel (page 219).
l Archivos XML.
l Archivos nativos de Qlik QVD y QVX.
l Archivos con registros de longitud fija
l Archivos Data Interchange Format (DIF): Los archivos DIF solo se pueden cargar con el editor de
carga de datos.
Tipos de conexiones
Puede cargar archivos desde distintos tipos de conexión de datos.
l Carpetas de archivos locales y en red: Para más información, vea Cargar archivos desde carpetas de
archivos locales y en red. (page 218).
l La carpeta Archivos adjuntos: No puede eliminar ni editar esta carpeta. Contiene archivos que se
han cargado y adjuntado a la app. (No disponible en Qlik Sense Desktop). Para más información, vea
Añadir datos a la app (page 17).
l Archivos en la web: Para más información, vea Cargar archivos desde recursos web (page 218).
Las conexiones DataFiles se crean automáticamente para cada espacio al que puede acceder. Por ejemplo,
en Conexiones de datos puede ver:
También puede cargar y almacenar archivos de carpetas de espacio compartido si tiene permiso de edición.
Los usuarios con permisos de edición en un espacio pueden leer, escribir y cargar archivos de
datos en ese espacio. Otros usuarios no verán los archivos de datos.
Ruta Introduzca la Ruta a la carpeta que contiene los archivos de datos. Podemos, o bien:
Seleccione la carpeta, escriba una ruta local válida o escriba una ruta UNC.
URL La URL completa al archivo web con el que desea conectar, incluido el identificador de
protocolo.
Example:
http://unstats.un.org/unsd/demographic/products/socind/Dec.%202012/1a.xls
Si conecta con un archivo FTP puede que necesite usar caracteres especiales, por
ejemplo : o @, en el nombre de usuario y la parte de contraseña de la URL. En este caso
necesita reemplazar los caracteres especiales por un carácter de porcentaje y el código
ASCII hexadecimal del carácter. Por ejemplo, debe reemplazar : por '%3a' y @ por '%40'.
La URL fijada en la conexión de datos del archivo web es estática de forma predeterminada, pero puede
ignorar la URL mediante la configuración de especificación de formato URL is . Esto es útil si necesita cargar
datos desde URL creadas dinámicamente.
https://community.qlik.com/community/qlik-sense/new-to-qlik-
sense/content?filterID=contentstatus%5Bpublished%5D~objecttype~objecttype%5Bthread%5D&itemView=detai
l&start=20
Con el contador i pasamos por las páginas con un step de 20 hasta 180, lo que significa que el ciclo For se
ejecuta 10 veces.
Para cargar la página, sustituimos la página de inicio por $ (i) al final de la URL en la configuración URL is.
For i = 0 to 180 step 20 LOAD Title1, "Author", F6 As Replies, Views, "Latest activity" FROM
[lib://x2] (URL IS [https://community.qlik.com/community/qlik-sense/new-to-qlik-
sense/content?filterID=contentstatus%5Bpublished%5D~objecttype~objecttype%5Bthread%5D&itemView=detai
l&start=$(i)], html, utf8, embedded labels, table is @1); Next i;
Esto cargará las 200 publicaciones más recientes del foro en una tabla, con título, autor, número de
respuestas y visualizaciones, así como la hora en que se registró la actividad más reciente.
Cuando carga una hoja de cálculo de Microsoft Excel, está usando la hoja de cálculo como una
fuente de datos para las apps de Qlik Sense. Es decir, que las hojas de Microsoft Excel se
convierten en tablas en Qlik Sense, no hojas en una app de Qlik Sense.
Puede resultarle útil realizar algunos cambios en Microsoft Excel antes de cargar la hoja de cálculo.
Nombres Especifique si la tabla contiene Nombres de campo incluidos o Sin nombres de campo .
de campo Normalmente, en una hoja de cálculo de Excel, la primera fila contiene los nombres de
campo incluidos. Si selecciona Sin nombres de campo , los campos se denominarán
A,B,C...
Tamaño Defina el número de filas que se deben omitir como cabecera de tabla, por lo general filas
de que contengan información general que no esté en un formato de columna.
cabecera
Ejemplo
La hoja de cálculo presentará el siguiente aspecto:
Hoja de cálculo
Equipo: AEJ12B - -
Fecha: 2015-10-05 09 - -
En este caso probablemente desee ignorar las dos primeras líneas y cargar una tabla con los campos
Timestamp, Order, Operator y Yield. Para lograr esto, utilice estos parámetros:
Parámetros para ignorar las dos primeras líneas y cargar los campos
Elemento
Descripción
de IU
Tamaño 2
de
Esto significa que las dos primeras líneas se consideran datos de cabecera y se ignoran
cabecera
cuando se carga el archivo. En este caso, las dos líneas que comienzan con Machine: y
Date: se ignoran, ya que no son parte de los datos de la tabla.
Preparar hojas de datos de Microsoft Excel para una carga más fácil con Qlik
Sense
Si desea cargar hojas de cálculo de Microsoft Excel en Qlik Sense, hay muchas funciones que puede usar
para transformar y limpiar sus datos en el script de carga de datos, pero puede que sea más conveniente
preparar los datos de origen directamente en el archivo de hoja de cálculo de Microsoft Excel. En esta
sección encontrará algunos consejos que le ayudarán a preparar su hoja de cálculo para cargarla en Qlik
Sense con solo un mínimo de codificación del script.
l Agregados, como sumas o contadores. Los agregados se pueden definir y calcular en Qlik Sense.
l Cabeceras duplicadas.
l Información adicional que no forma parte de los datos, como los comentarios. Lo mejor es tener una
columna para comentarios que se pueda ignorar fácilmente cuando se carga el archivo en Qlik Sense.
l Diseño de datos de tabla cruzada. Si, por ejemplo, tenemos una columna por mes, en lugar de eso
sería mejor que la columna se denominara “Mes” e introducir los mismos datos en 12 filas, una fila por
mes. Así siempre podrá verla en formato de tabla cruzada en Qlik Sense.
l Cabeceras intermedias, por ejemplo, una línea que diga “Departamento A” seguida por las líneas que
pertenecen a ese Departamento A. En su lugar, cree una cabecera de columna con el nombre
“Departamento” y rellénela con los nombres de departamento oportunos.
l Celdas combinadas. En su lugar, indique el valor de la celda en cada celda.
l Celdas vacías cuyo valor está implícito en el valor de la celda superior anterior. Habrá que rellenar las
celdas vacías donde el valor se repite para que cada celda contenga un valor de datos.
Normalmente, puede definir los datos sin procesar como un área designada y mantener todos los demás
comentarios y leyendas fuera de ese área designada. Esto facilitará la carga de datos en Qlik Sense.
l Conectores específicamente desarrollados para cargar datos directamente desde bases de datos a
través de drivers ODBC con licencia, sin la necesidad de conexiones DSN. Para más información, vea
Conectores de Qlik: Base de datos.
l Conectores que usan la interfaz Microsoft ODBC o OLE DB. Para usar Microsoft ODBC, debe instalar
un driver compatible con su DBMS y debe configurar la base de datos como una fuente de datos
ODBC en el Administrador de fuentes de datos ODBC del Windows Panel de control.
Para conectar directamente con una base de datos a través de uno de los drivers ODBC con licencia de Qlik,
consulte las instrucciones para conectores Database en el sitio de ayuda de Conectores de Qlik.
Los drivers ODBC con licencia de Qlik admiten las siguientes bases de datos:
l Amazon Redshift
l Apache Drill (Beta)
l Apache Hive
l Apache Phoenix (Beta)
l Apache Spark (Beta)
l Azure SQL
l Cloudera Impala
l Google BigQuery
l IBM DB2
l Microsoft SQL Server
l MongoDB (Beta)
l MySQL Enterprise
l Oracle
l PostgreSQL
l Presto
l Sybase ASE
l Teradata
1. Necesita tener una fuente de datos ODBC para la base de datos a la que desee acceder. Esto se
configura en el Administrador de fuentes de datos ODBC en el Windows Panel de control. Si
aún no tiene una fuente de datos, debe agregarla y configurarla para que apunte, por ejemplo, a una
base de datos de Microsoft Access.
2. Abra el editor de carga de datos.
3. Cree una conexión de datos ODBC que apunte a la conexión ODBC mencionada en el paso 1.
4. Haga clic en ± en la conexión de datos para abrir el cuadro de diálogo de selección de datos.
Ahora puede seleccionar datos de la base de datos e insertar el código de script necesario para cargar los
datos.
ODBC
Puede acceder a un DBMS (Database Management System) a través de ODBC con Qlik Sense:
l Puede utilizar los conectores de la Database del Qlik ODBC Connector Package que son compatibles
con las fuentes ODBC más habituales. Esto le permite definir la fuente de datos en Qlik Sense sin
necesidad de usar el Microsoft Windows Administrador de fuentes de datos ODBC. Para
conectar directamente con una base de datos a través de uno de los drivers ODBC con licencia de
Qlik en el ODBC Connector Package, consulte las instrucciones para conectores Database en el sitio
de ayuda de Qlik Connectors.
l Puede instalar un driver ODBC para el DBMS en cuestión y crear una fuente de datos DSN. Esto se
describe en la presente sección.
El diálogo Crear nueva conexión (ODBC) muestra las conexiones DSN de usuario que se
han configurado. Cuando esté usando Qlik Sense Desktop, la lista de conexiones DSN
muestra los drivers ODBC incluidos en ODBC Connector Package. Se identifican por el "Qlik-
" adjunto al nombre (por ejemplo, Qlik-db2). Estos drivers no se pueden utilizar para crear una
nueva conexión ODBC. Los utilizan exclusivamente los conectores de bases de datos del
ODBC Connector Package. Los drivers ODBC de ODBC Connector Package no se muestran
cuando estamos usando Qlik Sense en un entorno de servidor.
Otra posibilidad es exportar los datos desde la base de datos a un archivo en un formato legible para Qlik
Sense.
Normalmente algunos drivers ODBC vienen instalados junto con Microsoft Windows. Se pueden comprar
drivers adicionales a los minoristas de software, se encuentran en Internet o los facilita el fabricante de
DBMS. Algunos drivers se distribuyen gratuitamente.
La interfaz ODBC aquí descrita es la interfaz en el equipo cliente. Si el plan es usar ODBC para acceder a
una base de datos relacional multiusuario en un servidor de red, es posible que se necesite un software
DBMS adicional que permita a un cliente acceder a la base de datos en el servidor. Póngase en contacto con
el proveedor de DBMS para obtener más información sobre el software necesario.
Single Puede habilitar Single Sign-On (SSO) cuando se conecte a SAP HANA .
Sign-On
Si esta opción no está seleccionada, se utilizan las credenciales de usuario del servicio
Engine, a menos que especifique unas credenciales distintas en Nombre de usuario y
Contraseña .
Si se selecciona esta opción, las credenciales de usuario del servicio Engine o Nombre
de usuario /Contraseña servirán para hacer un inicio de sesión en Windows, seguido de
un inicio de sesión posterior en SAML (SAP HANA) usando las actuales credenciales de
usuario.
Nombre de Nombre del usuario con el que conectar, si la fuente de datos lo requiere.
usuario
Deje este campo vacío si desea utilizar las credenciales de usuario del servicio Engine
Service, o si la fuente de datos no requiere credenciales.
Deje este campo vacío si desea utilizar las credenciales de usuario del servicio Engine, o
si la fuente de datos no requiere credenciales.
Un driver ODBC para su DBMS debe estar instalado para que Qlik Sense pueda acceder a su base de datos.
Este es un software externo. Por lo tanto, las instrucciones a continuación pueden variar respecto al software
de otros proveedores. Para más detalles le remitimos a la documentación del DBMS que esté usando.
Haga lo siguiente:
Antes de comenzar con la creación de fuentes de datos, debe decidir si la fuente de datos debe
ser DSN de usuario o DSN de sistema (recomendado). Solo podrá acceder a fuentes de
datos de usuario con las credenciales de usuario correctas. En una instalación de servidor,
normalmente necesita crear fuentes de datos de sistema para poder compartir las fuentes de
datos con otros usuarios.
Haga lo siguiente:
1. Abra Odbcad32.exe.
2. Vaya a la pestaña DSN de sistema para crear una fuente de datos del sistema.
3. Haga clic en Añadir .
Aparece el cuadro de diálogo Crear nuevo origen de datos que muestra una lista de los drivers
ODBC instalados.
4. Si el driver ODBC correcto aparece en la lista, selecciónelo y haga clic en Finalizar .
Se abrirá un diálogo específico del driver de base de datos seleccionado.
5. Seleccione Driver de Microsoft Access (*.mdb, *.accdb) y haga clic en Finalizar .
Si esto supone un problema, se recomienda conectar con el archivo de datos usando una conexión de datos
de carpeta, si es posible.
OLE DB
Qlik Sense es compatible con la interfaz OLE DB (Object Linking and Embedding, Database) para
conexiones con fuentes de datos externas. Se puede acceder a un gran número de fuentes externas
mediante OLE DB.
Fuente de Escriba el nombre de la Fuente de datos a la que desee conectarse. Puede ser un
datos nombre de servidor o, en algunos casos, la ruta de acceso a un archivo de base de datos.
Esto depende de qué proveedor OLE DB esté usando. Únicamente disponible cuando
cree una nueva conexión.
Example:
Cadena de La cadena de conexión que utilizar cuando se conecta con la fuente de datos. La cadena
conexión contiene referencias al Proveedor y a la Fuente de datos. Únicamente disponible
cuando edite una conexión.
Seguridad Con esta opción se utilizan las actuales credenciales de Windows del usuario que ejecuta
integrada el servicio Qlik Sense.
Windows
Nombre de Con esta opción necesita introducir Nombre de usuario y Contraseña para las
usuario y credenciales de acceso a la fuente de datos.
contraseña
específicos:
Nombre de Nombre del usuario con el que conectar, si la fuente de datos lo requiere.
usuario
Deje este campo vacío si utiliza Seguridad integrada Windows o la fuente de datos no
requiere credenciales.
Deje este campo vacío si utiliza Seguridad integrada Windows o la fuente de datos no
requiere credenciales.
Elemento de
Descripción
IU
Si esto supone un problema, le recomendamos conectarse al archivo de datos usando una conexión de datos
de carpeta si es posible.
Cuando se selecciona un valor, todos los valores que sean compatibles con las selecciones se muestran
como opcional. Todos los demás valores se muestran como excluidos.
En algunos casos, las selecciones dentro de un campo se pueden fijar como un AND lógico.
directamente desde Qlik Sense. Qlik DataMarket ofrece datos históricos y actualizados de condiciones
meteorológicas y datos demográficos, tipos de cambio de divisa, así como indicadores empresariales,
económicos y otros datos sociales.
Qlik DataMarket también ofrece conjuntos de datos de la base de datos Eurostat, incluyendo Database by
themes, Tables by themes, Tables on EU policy y Cross cutting topics.
Algunos datos de Qlik DataMarket están disponibles de forma gratuita. Los paquetes de datos marcados
como Premium están disponibles mediante una tarifa de suscripción.
Antes de poder usar los datos de Qlik DataMarket, debemos aceptar los términos y condiciones para su uso.
También, si hemos comprado una licencia para paquetes de datos premium, debemos introducir nuestras
credenciales de acceso para poder utilizar los datos en dichos paquetes. Una vez aplicadas las credenciales
de acceso, los datos premium se marcan como Con licencia .
Si acepta los términos y condiciones pero no introduce una licencia para cualquiera de los paquetes de datos
premium, los paquetes de datos premium llevan junto a ellos un botón Comprar que le permite adquirir una
licencia. El botón Comprar reemplaza a la indicación Premium.
No es necesario aceptar los términos y condiciones de Qlik DataMarket cuando usamos Qlik
Sense Desktop. Tampoco se requieren credenciales de acceso porque los paquetes de datos
premium no están disponibles en Qlik Sense Desktop.
Podemos explorar los datos de Qlik DataMarket de forma aislada o integrados en nuestros propios datos.
Aumentar los propios datos internos con Qlik DataMarket a menudo lleva a sorprendentes descubrimientos..
Los datos de Qlik DataMarket están siempre actualizados en la fuente de la que proceden. La frecuencia con
la que se actualizan dichas fuentes de datos es variable. Los datos meteorológicos y de mercado se suelen
cargar una vez al día como mínimo, mientras que los datos poblacionales y de estadísticas públicas se suelen
actualizar con una frecuencia anual. Los principales indicadores macroeconómicos, como índices de precios,
desempleo y comercio, se publican mensualmente. Todas las actualizaciones de Qlik DataMarket por lo
general están disponibles en el mismo día.
Las selecciones de datos en Qlik Sense son persistentes, de forma que siempre se carguen los datos más
recientes disponibles en Qlik DataMarket cada vez que se recarga el modelo de datos.
La inmensa mayoría de datos en Qlik DataMarket son de carácter mundial y también específicos por países.
Por ejemplo, hay datos de población mundial disponibles para más de 200 países y territorios. Además, Qlik
DataMarket ofrece varios datos por estados y regiones de Estados Unidos y Europa.
Las apps a demanda de Qlik Sense ofrecen un enfoque más flexible para cargar y analizar fuentes de big
data.
Direct Discovery amplía las capacidades asociativas del modelo de datos en memoria de Qlik Sense al
ofrecer acceso a fuentes de datos adicionales mediante una consulta agregada que asocia sin fisuras
grandes conjuntos de datos con datos en memoria. Direct Discovery mejora la capacidad del usuario para
realizar análisis asociativos en fuentes de Big Data sin limitaciones. Se pueden hacer selecciones en los
datos en memoria y en los datos de Direct Discovery para ver las asociaciones en los distintos conjuntos de
datos con los colores que utiliza siempre Qlik Sense: verde, gris y blanco. Las visualizaciones pueden
analizar datos de ambos conjuntos de datos a la vez.
Los datos de Direct Discovery se seleccionan empleando una sintaxis de script específica denominada
DIRECT QUERY. Una vez que se ha establecido la estructura Direct Discovery, los campos de Direct
Discovery se pueden utilizar junto con los datos en memoria para crear objetos Qlik Sense. Cuando se utiliza
un campo de Direct Discovery en un objeto Qlik Sense, se ejecuta automáticamente una consulta SQL en la
fuente de datos externa.
Las apps a demanda ofrecen otro método para acceder a grandes conjuntos de datos. A diferencia de Direct
Discovery, las apps a demanda ofrecen funcionalidad plena de Qlik Sense en un subconjunto latente alojado
en la memoria.
Una segunda tabla relacionada cargada en la memoria compartiría un campo común y esa tabla podría
añadir nuevos valores únicos al campo común, o podría compartir valores previos.
Direct Discovery
Cuando los campos de tabla se cargan mediante una sentencia Direct Discovery LOAD (Direct Query), se
crea una tabla similar únicamente con los campos DIMENSION . Al igual que ocurre con los campos en
memoria, los valores únicos de los campos DIMENSION se cargan en la memoria. Pero las asociaciones
entre los campos se quedan en la base de datos.
Una vez que se ha establecido la estructura Direct Discovery, los campos Direct Discovery se pueden usar
con determinados objetos de visualización y pueden utilizarse para asociaciones con los campos en
memoria. Cuando se utiliza un campo Direct Discovery, Qlik Sense automáticamente crea la consulta SQL
adecuada para ejecutarse en los datos externos. Cuando se realizan selecciones, los valores de datos
asociados de los campos Direct Discovery se utilizan en las condiciones WHERE de las consultas a la base
de datos.
Con cada selección, las visualizaciones con campos Direct Discovery se recalculan y los cálculos se realizan
en la tabla de la base de datos de origen ejecutando la consulta SQL creada por Qlik Sense. Se puede
utilizar la funcionalidad de la condición de cálculo para especificar cuándo queremos que se recalculen las
visualizaciones. Hasta que se cumpla dicha condición, Qlik Sense no envía consultas para recalcular las
visualizaciones.
Es posible utilizar las mejores prácticas estándar de bases de datos y rendimiento de consultas en Direct
Discovery. Todos los ajustes de rendimiento deberían hacerse en la base de datos fuente. Direct Discovery
no ofrece soporte para el ajuste del rendimiento de las consultas desde la app de Qlik Sense. Sin embargo,
sí es posible hacer llamadas paralelas asíncronas a la base de datos utilizando la capacidad de agrupación de
conexiones. La sintaxis de script de carga para configurar la capacidad de conexión directa es la siguiente:
SET DirectConnectionMax=10;
El almacenamiento en la caché de Qlik Sense también mejora la experiencia global del usuario. Vea
Almacenamiento en caché y Direct Discovery (page 236) más adelante.
El rendimiento de Direct Discovery con DIMENSION también puede mejorarse separando algunos de los
campos de las asociaciones. Esto se hace mediante la palabra clave DETACH en DIRECT QUERY. Si
bien los campos separados no se consultan en busca de asociaciones, aún forman parte de los filtros, con lo
que aceleran los tiempos de selección.
Mientras que los campos en memoria de Qlik Sense y los campos Direct DiscoveryDIMENSION poseen
todos sus datos en memoria, la manera en que se cargan afecta a la velocidad de carga de datos de la
memoria. Los campos en memoria de Qlik Sense guardan solo una copia de un valor de campo cuando hay
múltiples instancias de un mismo valor. Sin embargo, se cargan todos los datos de campo y luego los datos
duplicados se clasifican.
Los campos DIMENSION también almacenan solo una copia de un valor de campo, pero los valores
duplicados se clasifican y organizan en la base de datos antes de cargarse en la memoria. Cuando
manejamos cantidades extensas de datos, como suele ocurrir cuando usamos Direct Discovery, los datos se
cargan mucho más rápido como una carga DIRECT QUERY que con la carga SQL SELECT empleada
para campos en memoria.
Tabla de ejemplo
ColumnaA ColumnaB
rojo uno
Rojo dos
rOJO tres
ROJO cuatro
Red two
Qlik Sense normaliza los datos hasta tal punto que produce correspondencias en datos seleccionados que
las bases de datos no encontrarían. Como resultado, una consulta en memoria puede producir más valores
de correspondencias que una consulta de Direct Discovery. Por ejemplo, en la tabla siguiente, los valores
para el número "1" varían según la ubicación de los espacios a su alrededor:
'1' sin_espacio
'2' dos
Si selecciona "1" en un Panel de filtrado para ColumnA, donde los datos están en memoria estándar en
Qlik Sense, las primeras tres filas se asocian:
Associated rows
ColumnA ColumnB
'1' no_space
Si el Panel de filtrado contiene datos Direct Discovery, la selección de "1" podría asociar solo "no_space".
Las correspondencias que devuelven datos Direct Discovery dependen de la base de datos. Algunas
devuelven solo "no_space" y otras, como SQL Server, devuelven "no_space" y "space_after".
Example:
Se puede establecer un límite de tiempo en el almacenamiento en caché con la variable del sistema
DirectCacheSeconds. Una vez que se ha alcanzado el límite de tiempo, Qlik Sense borra la caché de los
resultados de la consulta Direct Discovery que se generaron para las selecciones anteriores. Qlik Sense
consulta entonces a la fuente de datos las selecciones efectuadas y crea la caché de nuevo según el límite de
tiempo designado.
El tiempo de caché predeterminado para los resultados de la consulta Direct Discovery es de 30 minutos, a
menos que se use la variable de sistema DirectCacheSeconds.
Todos los campos Direct Discovery se pueden utilizar en combinación con los campos en memoria.
Normalmente, los campos con valores discretos que se usarán como dimensiones se deben cargar con la
palabra clave DIMENSION, mientras que los datos numéricos que se usarán en agregaciones solo se deben
marcar como campos MEASURE.
La tabla a continuación resume las características y el uso de los tipos de campos de Direct Discovery:
DIMENSION Sí Sí Sí
MEASURE No No Sí
DETAIL No No No
Campos DIMENSION
Los campos DIMENSION se cargan en la memoria y se pueden utilizar para crear asociaciones entre datos
en memoria y datos en los campos de Direct Discovery. Los campos Direct DiscoveryDIMENSION también
se utilizan para definir valores de dimensión en gráficos.
Campos MEASURE
Los campos MEASURE, por otra parte, se reconocen a un "nivel meta". Los campos MEASURE no se
cargan en memoria (no aparecen en el visor del modelo de datos). La finalidad es permitir agregaciones de
los datos en campos MEASURE para que se produzcan en la base de datos mejor que en la memoria. No
obstante, los campos MEASURE se pueden usar en expresiones sin alterar la sintaxis de la expresión. Como
resultado, el uso de los campos de Direct Discovery desde la base de datos es transparente para el usuario
final.
l Sum
l Avg
l Count
l Min
l Max
Campos DETAIL
Los campos DETAIL proporcionan información o detalles que puede que desee mostrar pero no utilizar en
expresiones de gráficos. Los campos designados como DETAIL normalmente contienen datos que no se
pueden agregar de modo significativo, como comentarios.
l Fuentes de datos ODBC/OLEDB - Se admiten todas las fuentes de datos ODBC/OLEDB, incluyendo
SQL Server, Teradata y Oracle.
l Conectores que admiten SQL – Conector SAP SQL, conectores QVX personalizados para
almacenamientos de datos compatibles con SQL.
SAP
Para SAP, Direct Discovery se puede usar solo con el Qlik SAP SQL Connector, y requiere los siguientes
parámetros en las variables SET:
SAP utiliza OpenSQL, el cual delimita columnas con un espacio, en lugar de una coma, así que las
sentencias set anteriores ocasionan una substitución, para alojar la diferencia entre ANSI SQL y OpenSQL.
SET DirectDistinctSupport=false;
SET DirectIdentifierQuoteChar='[]';
SET DirectIdentifierQuoteStyle='big query'
Google Big Query no admite SELECT DISTINCT o nombres de columna/tabla entre comillas y tiene una
configuración no-ANSI de entrecomillado que utiliza '[ ]'.
SET DirectIdentifierQuoteChar='``';
SET DirectIdentifierQuoteChar='""';
SET DirectIdentifierQuoteChar='[]';
Apache Hive
Direct discovery puede usarse junto con Apache Hive, pero puede que requiera el parámetro siguiente en las
variables de conjunto debido a los caracteres de entrecomillado empleados en estas fuentes:
SET DirectIdentifierQuoteChar='';
Cloudera Impala
Direct discovery puede usarse junto con Cloudera Impala, pero puede que requiera el parámetro siguiente en
las variables de conjunto debido a los caracteres de entrecomillado empleados en estas fuentes:
SET DirectIdentifierQuoteChar='[]';
Este parámetro es obligatorio cuando se usa Cloudera Impala Connector en Qlik ODBC Connector Package.
Puede que no sea necesaio cuando se usa ODBC a través de DSN.
Example:
SET DirectDateFormat='YYYY-MM-DD';
También hay dos variables de script para controlar cómo Direct Discovery da formato a los valores de
moneda en las sentencias SQL generadas:
l Este no es un formato para presentación, así que no debería incluir símbolos de moneda o
separadores de miles.
l Los valores predefinidos no se ven afectados por los datos locales sino que están vinculados a los
valores. (Los formatos locales específicos incluyen el símbolo de moneda.)
Direct Discovery puede admitir la selección de datos Unicode extendidos mediante el uso del formato
estándar SQL para literales de cadenas de caracteres extendidos (N'<cadena extendida>'), tal como
requieren algunas bases de datos, como SQL Server. Esta sintaxis se puede habilitar para Direct Discovery
con la variable de script DirectUnicodeStrings. Fijar esta variable en "true" permite el uso de "N" frente a
los literales de cadena.
Seguridad
Los comportamientos siguientes que podrían afectar a las prácticas de seguridad deben tenerse en cuenta
cuando usamos Direct Discovery:
l Todos los usuarios que estén utilizando la misma app con la capacidad Direct Discovery utilizan la
misma conexión. No admite procesos de autenticación ni credenciales por usuario.
l La Sección de Acceso sólo está disponible en el modo servidor.
l La sección de acceso no es compatible con uniones de alta cardinalidad.
l Es posible ejecutar sentencias SQL personalizadas en la base de datos con una expresión de palabra
clave NATIVE, por lo que la conexión a la base de datos configurada en el script de carga debe usar
una cuenta que tenga acceso de solo lectura a la base de datos.
l Direct Discovery no tiene capacidad de registro, pero es posible usar la capacidad de seguimiento
ODBC.
l Es posible llenar la base de datos de peticiones del cliente.
l Es posible obtener unos mensajes de error detallados de los archivos de registro del servidor.
Por ejemplo, podemos enlazar las tablas cargadas con Direct Discovery usando una cláusula Where o una
cláusula Join .
Product_Join:
DIRECT QUERY
DIMENSION
[ProductID],
[AW2012].[Production].[Product].[Name] as [Product Name],
[AW2012].[Production].[ProductSubcategory].[Name] as [Sub Category Name],
Color,
[AW2012].[Production].[Product].ProductSubcategoryID as [SubcategoryID]
MEASURE
[ListPrice]
FROM [AW2012].[Production].[Product],
[AW2012].[Production].[ProductSubcategory]
WHERE [AW2012].[Production].[Product].ProductSubcategoryID =
[AW2012].[Production].[ProductSubcategory].ProductSubcategoryID ;
En este ejemplo, crearemos medidas a partir de la misma tabla lógica, lo que significa que podemos
utilizarlas en el mismo gráfico. Por ejemplo, puede crear un gráfico con SubTotal y OrderQty como medidas.
Sales_Order_Header_Join:
DIRECT QUERY
DIMENSION
AW2012.Sales.Customer.CustomerID as CustomerID,
AW2012.Sales.SalesOrderHeader.SalesPersonID as SalesPersonID,
AW2012.Sales.SalesOrderHeader.SalesOrderID as SalesOrderID,
ProductID,
AW2012.Sales.Customer.TerritoryID as TerritoryID,
OrderDate,
NATIVE('month([OrderDate])') as OrderMonth,
NATIVE('year([OrderDate])') as OrderYear
MEASURE
SubTotal,
TaxAmt,
TotalDue,
OrderQty
DETAIL
DueDate,
ShipDate,
CreditCardApprovalCode,
PersonID,
StoreID,
AccountNumber,
rowguid,
ModifiedDate
FROM AW2012.Sales.SalesOrderDetail
JOIN AW2012.Sales.SalesOrderHeader
ON (AW2012.Sales.SalesOrderDetail.SalesOrderID =
AW2012.Sales.SalesOrderHeader.SalesOrderID)
JOIN AW2012.Sales.Customer
ON(AW2012.Sales.Customer.CustomerID =
AW2012.Sales.SalesOrderHeader.CustomerID);
Para ilustrar esto, usamos un ejemplo donde una tabla de productos (ProductTable) está vinculada a una
tabla de pedidos de venta (SalesOrderDetail) usando una identificación de producto (ProductID), con ambas
tablas usadas en modo Direct Discovery.
Creamos un gráfico con OrderMonth como dimensión y Sum(Subtotal) como medida, y un cuadro de filtro
para seleccionar Size.
La solución está en permitir que Qlik Sense cree subconsultas en vez, configurando
DirectEnableSubquery como verdadero. La sentencia SQL generada podría presentar el siguiente
aspecto:
l Sólo debemos invocar la sintaxis de subconsultas cuando seleccionemos datos que impliquen filtrar
un gráfico usando datos de otra tabla.
l La cantidad de datos dentro de las claves es el factor determinante, no el número de claves.
l Las subconsultas sólo se invocan si todas las tablas implicadas están en modo Direct Discovery. Si
filtramos el gráfico utilizando datos de una tabla incluida en el modo de memoria, se generará una
cláusula IN.
Las sentencias SQL de detalles del archivo de rastreo resultantes se generan a través de las selecciones e
interacciones del usuario.
En el visor del modelo de datos cada tabla de datos está representada por un recuadro, con el nombre de
tabla como título y con todos los campos de la tabla listados debajo. Las asociaciones de tablas se muestran
con líneas, con una línea punteada indicando una referencia circular. Cuando seleccionamos una tabla o un
campo, se nos muestra una imagen al instante que permite ver la relación entre campos y tablas. Puede
hacer clic en para buscar tablas o campos específicos.
Puede cambiar el nivel de zoom haciendo clic en Y , Z o utilizando el control deslizante. Haga clic en ü
para restaurar el nivel de zoom a 1:1.
Menú global con opciones de navegación y acciones que puede realizar en su app.
⊟ Puede mostrar u ocultar la información de la app, editar la información o abrir las opciones
de la app y dar estilo a su app.
Datos Prepare sus datos. Puede seleccionar Gestor de datos, Visor del modelo de datos o
Editor de carga de datos.
Las opciones no están disponibles en una app publicada, a menos que sea el propietario de
la app. En ese caso, solo puede abrir el Visor del modelo de datos.
Historia Cuente una historia con sus datos. Puede seleccionar Narración .
å Reduzca el tamaño de todas las tablas para mostrar el nombre de tabla y todos los campos
con asociaciones a otras tablas.
+ Vista de tablas internas - el modelo de datos de Qlik Sense incluidos los campos sintéticos.
7 Vista de tablas de origen - el modelo de datos de las tablas de los datos fuente.
ì Diseño de cuadrícula
ó Auto formato
õ Restaurar formato
j Abre y cierra el panel de vista previa.
Puede bloquear el diseño de la tabla (posiciones y tamaños) haciendo clic en [ , en la parte derecha del
lienzo. Para desbloquear el diseño de la tabla, haga clic en \ .
También puede organizar el diseño automáticamente usando las opciones que hay debajo de ì en la barra
de herramientas:
õ Restaurar Para volver al estado de diseño en el que se abrió por última vez el visor de
formato modelo de datos.
Redimensionar tablas
Podemos ajustar el tamaño de visualización de una tabla con la flecha de la esquina inferior derecha de la
tabla. El tamaño de presentación no se guardará al guardar la app.
t Contraer todo Minimizar todas las tablas para mostrar solo el nombre de tabla.
å Mostrar campos Para reducir el tamaño de todas las tablas a la tabla y todos los campos con
enlazados asociaciones a otras tablas.
s Expandir todo Para maximizar todas las tablas y poder mostrar todos los campos de la tabla.
Además, en el panel de vista previa se muestran los metadatos de la tabla o campo seleccionados.
El panel de vista previa se mostrará, con los campos y valores de la tabla seleccionada.
El panel de vista previa se mostrará, con el campo seleccionado y sus valores, así como los metadatos del
campo. También podemos añadir el campo como una dimensión o medida maestra.
l Densidad es el número de registros que tienen valores que no son nulos, NULL, en este campo, en
comparación con el número total de registros de la tabla.
l Ratio de subconjunto es el número de valores distintos del campo que se encuentra en esta tabla,
comparado con el número total de valores distintos de este campo que se encuentran en otras tablas
del modelo de datos. Esto solo es relevante para campos clave.
l Si el campo está marcado con [Clave perfecta], cada fila contiene un valor clave que es único.
Haga lo siguiente:
1. En el visor del modelo de datos, seleccione un campo y abra el panel Vista previa .
2. Haga clic en Añadir como dimensión .
Se abrirá el diálogo Crear nuevas dimensiones, con el campo seleccionado. El nombre del campo
seleccionado se usa también como nombre predeterminado para la dimensión.
3. Cambie el nombre si lo desea y también puede añadir una descripción, color y etiquetas.
4. Haga clic en Crear .
5. Haga clic en Hecho para cerrar el cuadro de diálogo.
Puede añadir rápidamente varias dimensiones como elementos maestros al hacer clic en
Añadir dimensión tras añadir cada dimensión. Haga clic en Hecho cuando termine.
Las tablas Direct Discovery se indican mediante ÿ en el visor del modelo de datos.
Haga lo siguiente:
1. En el visor del modelo de datos, seleccione un campo y abra el panel Vista previa .
2. Haga clic en Añadir como medida .
Se abrirá el diálogo Crear nueva medida , con el campo seleccionado. El nombre del campo
seleccionado se usa también como nombre predeterminado para la medida.
3. Introduzca un nombre para la medida.
4. Cambie el nombre si lo desea y también puede añadir una descripción, color y etiquetas.
5. Haga clic en Crear .
2013 34 54 53 52
2014 47 56 65 67
2015 57 56 63 71
Proposed action
2013 Q1 34
2013 Q2 54
2013 Q3 53
2013 Q4 52
2014 Q1 47
ball diameter 25
ball weight 3
box color 56
box height 30
box length 20
box width 25
Proposed action
1 - General manager
2 1 Country manager
3 2 Region manager
Proposed action
Cargue los datos con el prefijo Hierarchy para crear una tabla de nodos expandidos:
1 - General General - -
manager manager
Proposed action
Puede combinar dos tablas en una única tabla interna con los prefijos Join o Keep .
Una alternativa para unir tablas es usar mapping, que automatiza la consulta de valores asociados en una
tabla de enlace. Esto puede reducir la cantidad de datos que mostrar.
01:00 03:35 A
02:30 07:58 B
03:04 10:27 C
07:23 11:43 D
Proposed action
Utilice el prefijo IntervalMatch para enlazar el campo Time con el intervalo definido por Start y End.
Si el intervalo no está definido explícitamente con inicio y fin, sino que solo lleva una fecha-hora, como se ve
en la tabla inferior, necesitaremos crear una tabla de intervalos.
EUR - 8.59
USD - 6.50
Tabla 1
País: Región
US Maryland
US Idaho
US New York
US California
Table 2
Country Population
Proposed action
Haga una limpieza de datos utilizando una tabla de correspondencia (también denominada de enlace), eso
comparará los valores y permitirá las asociaciones correctas.
Tabla 1
Tipo Precio
single 23
double 39
Tabla 2
Tipo Color
Single Rojo
Single Blue
Double Blanco
Double Black
Proposed action
Si cargó los datos con Añadir datos, puede arreglar esto en el gestor de datos.
Haga lo siguiente:
Table1 y Table2 deberían estar asociados ahora por el campo Type, que solo contiene valores en
minúsculas, como single y double.
Si desea utilizar otro estilo diferente, también puede lograr esto con procedimientos similares, pero recuerde
que las tablas se asociarán utilizando campos que tengan el mismo nombre.
l Para obtener todos los valores en mayúscula, como Single, cree el campo calculado Type en la tabla
Table1 en su lugar y use la expresión Capitalize(Table1.Type).
l Para obtener todos los valores en mayúscula, como SINGLE, cree el campo calculado Type en
ambas tablas, y utilice las expresiones Upper(Table1.Type) y Upper(Table2.Type) respectivamente.
Proposed action
Podemos cargar datos de punto o área que encajen con nuestras ubicaciones de valores de datos desde un
archivo KML o archivo Excel. Además, necesitaremos cargar el fondo del mapa.
1. Cargue datos que sean nuevos o actualizados desde la tabla fuente de la base de datos.
Este proceso es lento, pero solo cargará un número limitado de registros.
2. Cargue los datos que ya están disponibles en la aplicación desde el archivo QVD.
Se cargarán muchos registros, pero este proceso es mucho más rápido.
3. Crear un nuevo archivo QVD.
Este es el archivo que utilizará la próxima vez que haga una carga incremental.
4. Repita este mismo procedimiento para cada tabla que cargue.
Los ejemplos siguientes muestran casos en los que se utiliza la carga incremental. No obstante, podría ser
necesaria una solución más compleja, dependiendo de la estructura de la base de datos fuente y el modo de
funcionamiento.
Puede leer archivos QVD en modo optimizado o en modo estándar. (El método empleado es seleccionado
automáticamente por el motor Qlik Sense dependiendo de la complejidad de la operación). El modo
optimizado es aproximadamente 10 veces más rápido que el modo estándar o aproximadamente 100 veces
más rápido que cargar la base de datos de la manera habitual.
Anexar solo
El caso más simple es el de los archivos .log de registro, que solo se anexan y nunca se borran. Las
condiciones son las siguientes:
l La base de datos debe ser un archivo de registro (o algún otro archivo en el que los registros se
anexen y no se inserten ni eliminen) que esté contenido en un archivo de texto (ODBC, OLE DB u
otras bases de datos no son compatibles).
l Qlik Sense lleva un registro constante del número de registros leídos previamente y carga solo los
registros añadidos al final del archivo.
Example:
Buffer (Incremental) Load * From LogFile.txt (ansi, txt, delimiter is '\t', embedded labels);
Example:
QV_Table:
SQL SELECT PrimaryKey, X, Y FROM DB_TABLE
WHERE ModificationTime >= #$(LastExecTime)#
AND ModificationTime < #$(BeginningThisExecTime)#;
Los signos hash en la cláusula SQL WHERE definen el inicio y fin de una fecha. Compruebe en el manual de
su base de datos la sintaxis de fecha correcta de su base de datos.
Example:
QV_Table:
SQL SELECT PrimaryKey, X, Y FROM DB_TABLE
WHERE ModificationTime >= #$(LastExecTime)#;
nuevos.
l Se requiere un campo clave primario para que Qlik Sense ordene los registros actualizados del
archivo QVD.
l Esta solución obligará a la lectura del archivo QVD en modo estándar (en lugar de optimizado), lo cual
es considerablemente más rápido que cargar toda la base de datos.
Example:
QV_Table:
SQL SELECT PrimaryKey, X, Y FROM DB_TABLE
WHERE ModificationTime >= #$(LastExecTime)#
AND ModificationTime < #$(ThisExecTime)#;
If ScriptErrorCount = 0 then
STORE QV_Table INTO File.QVD;
Let LastExecTime = ThisExecTime;
End If
Es posible unir tablas ya en el script. La lógica de Qlik Sense no percibirá entonces dichas tablas como
separadas, sino como el resultado de la unión (join), es decir, como si se tratara de una única tabla lógica. En
algunas situaciones esto puede ser necesario, pero tiene sus inconvenientes:
l Las tablas cargadas suelen aumentar de tamaño, lo cual hace que Qlik Sense funcione a menor
velocidad.
l Parte de la información podría perderse: la frecuencia (el número de registros) de la tabla original
podría no estar ya disponible.
La funcionalidad de Keep, que tiene el efecto de reducir una o las dos tablas a la intersección de los datos de
la tabla antes de que las tablas se almacenen en Qlik Sense, se ha diseñado para reducir el número de casos
en los que es necesario usar uniones explícitas.
En esta documentación se utiliza el término unir (join) generalmente para referirse a las
uniones efectuadas antes de crear las tablas internas. Sin embargo, la asociación que se
realiza una vez creadas las tablas lógicas, también es un join en esencia.
Sin embargo, la mayoría de drivers ODBC no pueden realizar una unión externa completa (outer join
bidireccional). Solo son capaces de hacer una unión externa izquierda o derecha. Una unión externa
izquierda (o derecha) solo incluye aquellas combinaciones donde la clave de la unión figura en la tabla
izquierda (o derecha). Una unión externa completa incluye cualquier combinación. Qlik Sense realiza una
unión externa completa de forma automática.
Además, hacer joins en sentencias SELECT es mucho más complicado que hacer joins en Qlik Sense.
Example:
SELECT DISTINCTROW
[Order Details].ProductID, [Order Details].
UnitPrice, Orders.OrderID, Orders.OrderDate, Orders.CustomerID
FROM Orders
RIGHT JOIN [Order Details] ON Orders.OrderID = [Order Details].OrderID;
Esta sentencia SELECT une una tabla que contiene pedidos a una empresa ficticia, con una tabla que
contiene detalles de pedidos. Es un right outer join, lo que significa que todos los registros de OrderDetails
se incluyen, también los que tienen un OrderID que no existe en la tabla Orders. Los pedidos que existen en
Orders pero no en OrderDetails, no obstante, no se incluyen.
Join
La manera más fácil de hacer un join es mediante la inclusión del prefijo Join en el script, el cual une una
tabla interna con otra tabla designada o con la última tabla previamente creada. La unión será una unión
externa, creando todas las combinaciones posibles de valores de ambas tablas.
Example:
Los nombres de los campos que se desea unir deberán ser exactamente iguales. El número de
campos que se van a unir es arbitrario. Normalmente, las tablas deberían tener uno o varios
campos en común. Si no tienen ningún campo en común, se devuelve el producto cartesiano
de las tablas. También es posible tener todos los campos en común, pero en general no tiene
sentido. A menos que se haya especificado el nombre de una tabla previamente cargada en la
sentencia Join el prefijo Join utiliza la última tabla previamente creada. Por lo tanto, el orden
de las dos sentencias no es arbitrario.
Keep
El prefijo Join explícito en el script de carga de datos realiza una unión completa de las dos tablas. El
resultado es una sola tabla. El resultado de estas uniones es, en muchos casos, una tabla muy extensa. Una
de las principales características de Qlik Sense es su capacidad de hacer asociaciones entre tablas en lugar
de unirlas (mediante join). Esto permite ahorrar mucho espacio en la memoria e incrementar la velocidad, lo
que se traduce en una flexibilidad enorme. La funcionalidad keep se ha diseñado para reducir el número de
casos en los que se tengan que usar joins explícitos.
El prefijo Keep entre dos sentencias LOAD o SELECT tiene el efecto de reducir una o las dos tablas a la
intersección de los datos de la tabla antes de que se almacenen en Qlik Sense. El prefijo Keep debe ir
precedido siempre de una de las palabras clave Inner , Left o Right. La selección de los registros desde las
tablas se hace de la misma forma que en un join correspondiente. No obstante, las dos tablas no se unen y
se almacenan en Qlik Sense como dos tablas independientes y con distintos nombres.
Inner
Los prefijos Join y Keep en el script de carga de datos pueden ir precedidos por el prefijo Inner .
Si se usa antes de Join , especifica que el join entre las dos tablas debería ser un inner join. La tabla
resultante contiene solo combinaciones ente las dos tablas, con un conjunto completo de datos de ambas
partes.
Si se usa antes de Keep , especifica que las dos tablas deberían reducirse a su intersección común antes de
ser almacenadas en Qlik Sense.
Example:
Table 1
A B
1 aa
2 cc
3 ee
Table2
A C
1 xx
4 yy
Inner Join
Primero hacemos un Inner Join en las tablas, lo que da como resultado a VTable, que contiene solo una
fila, el único registro que existe en ambas tablas, con datos combinados de ambas tablas.
VTable:
SELECT * from Table1;
inner join SELECT * from Table2;
VTable
A B C
1 aa xx
Inner Keep
Si en cambio realizamos un Inner Keep , todavía tendremos dos tablas. Las dos tablas están asociadas por
el campo común A.
VTab1:
SELECT * from Table1;
VTab2:
inner keep SELECT * from Table2;
VTab1
A B
1 aa
VTab2
A C
1 xx
Left
Los prefijos Join y Keep en el script de carga de datos pueden ir precedidos por el prefijo left.
Si se usa antes de Join , especifica que el join entre las dos tablas debería ser un left join. La tabla resultante
contiene solo combinaciones entre las dos tablas, con el conjunto de datos completo de la primera tabla.
Si se usa antes de Keep , especifica que la segunda tabla debe reducirse a su intersección común con la
primera tabla antes de ser almacenada en Qlik Sense.
Example:
Table1
A B
1 aa
2 cc
3 ee
Table2
A C
1 xx
4 yy
Primero realizamos un Left Join en las tablas, dando como resultado VTable, que contiene todas las filas de
Table1, combinadas con campos de las correspondientes filas en Table2.
VTable:
SELECT * from Table1;
left join SELECT * from Table2;
VTable
A B C
1 aa xx
2 cc -
3 ee -
Si en cambio realizamos un Left Keep , todavía tendremos dos tablas. Las dos tablas están asociadas por el
campo común A.
VTab1:
SELECT * from Table1;
VTab2:
left keep SELECT * from Table2;
VTab1
A B
1 aa
2 cc
3 ee
VTab2
A C
1 xx
Right
Los prefijos Join y Keep en el script de carga de datos pueden ir precedidos por el prefijo right.
Si se usa antes de Join , especifica que el join entre las dos tablas debería ser un right join. La tabla
resultante solo contiene combinaciones entre las dos tablas, con un conjunto completo de datos de la
segunda tabla.
Si se usa antes de Keep , especifica que la primera tabla debe reducirse a su intersección común con la
segunda tabla antes de ser almacenada en Qlik Sense.
Example:
Table1
A B
1 aa
2 cc
3 ee
Table2
A C
1 xx
4 yy
Primero realizamos un Right Join en las tablas, dando como resultado VTable, que contiene todas las filas
de Table2, combinadas con campos de las correspondientes filas en Table1.
VTable:
SELECT * from Table1;
right join SELECT * from Table2;
VTable
A B C
1 aa xx
4 - yy
Si en cambio realizamos un Right Keep , todavía tendremos dos tablas. Las dos tablas están asociadas por
el campo común A.
VTab1:
SELECT * from Table1;
VTab2:
right keep SELECT * from Table2;
VTab1
A B
1 aa
VTab2
A C
1 xx
4 yy
En este ejemplo, tenemos una tabla de pedidos (Orders) y necesitamos conocer los países de los clientes,
que están almacenados en la tabla de clientes (Customers).
12987 2007-12-01 1 27 3
12988 2007-12-01 1 65 4
12989 2007-12-02 2 32 2
12990 2007-12-03 1 76 3
Para buscar el país (Country) de un cliente, necesitamos una tabla de correspondencia con el siguiente
aspecto:
Tabla de correspondencia
IDCliente País:
1 España
IDCliente País:
2 Italia
3 Alemania
4 Francia
MapCustomerIDtoCountry:
Mapping LOAD CustomerID, Country From Customers ;
Orders:
LOAD *,
ApplyMap('MapCustomerIDtoCountry', CustomerID, null()) as Country
From Orders ;
El tercer parámetro de la función ApplyMap se usa para definir qué se devolverá cuando un valor no se
encuentre en la tabla de correspondencia, en este caso Null() .
Tabla resultante
IDPedido FechaPedido IDTransporte Flete IDCliente País:
Esta sección describe cómo podemos despivotar una tabla cruzada, es decir, transponer (o trasladar) partes
de la misma a filas utilizando el prefijo crosstable en una sentencia LOAD en el script de carga de datos.
2008 45 65 78 12 78 22
2009 11 23 22 22 45 85
2010 65 56 22 79 12 56
2011 45 24 32 78 55 15
2012 45 56 35 78 68 82
Si esta tabla simplemente se carga en Qlik Sense el resultado será una tabla con un campo por Year y otro
campo por cada uno de los meses. Por regla general, éste no es el resultado que interesa. Probablemente
preferiríamos tener tres campos generados:
Esto se logra añadiendo el prefijo crosstable a la sentencia LOAD o SELECT, por ejemplo:
2008 Ene 45
2008 Feb 65
2008 Mar 78
2008 Abr 12
2008 May 78
2008 Jun 22
2009 Ene 11
2009 Feb 23
A 2008 45 65 78 12 78 22
A 2009 11 23 22 22 45 85
A 2010 65 56 22 79 12 56
A 2011 45 24 32 78 55 15
A 2012 45 56 35 78 68 82
B 2008 57 77 90 24 90 34
B 2009 23 35 34 34 57 97
B 2010 77 68 34 91 24 68
B 2011 57 36 44 90 67 27
B 2012 57 68 47 90 80 94
El número de columnas cualificadoras se puede indicar como un tercer parámetro en el prefijo crosstable de
la siguiente manera:
Tabla con columnas cualificadoras enunciadas como un tercer parámetro para el prefijo crosstable
Comercial de venta Year Month Sales
A 2008 Ene 45
A 2008 Feb 65
A 2008 Mar 78
A 2008 Abr 12
A 2008 May 78
A 2008 Jun 22
A 2009 Ene 11
A 2009 Feb 23
Eche un vistazo al ejemplo de GenericTable a continuación. Es una base de datos genérica que contiene dos
objetos, una pelota y una caja. Obviamente hay algunos atributos que son comunes a ambos objetos, como
el color y peso, y otros que no, como el diámetro, la altura, la longitud y el ancho.
GenericTable
objecto atributo valor
bola diámetro 10 cm
recuadro alto 16 cm
recuadro largo 20 cm
recuadro ancho 10 cm
Por un lado sería torpe almacenar los datos de una manera que otorgue a cada atributo una columna propia,
ya que muchos atributos no son relevantes para un determinado objeto.
Por otro lado, el aspecto sería muy desordenado si se mostraran los datos mezclando longitudes, colores y
pesos.
Si se carga esta base de datos en Qlik Sense empleando el modo estándar y mostramos los datos en una
tabla, esta presenta el siguiente aspecto:
Sin embargo, si la tabla se carga como una base de datos genérica, dividirá las columnas dos y tres en tablas
diferentes, una por cada valor único de la segunda columna:
Example:
Ejemplo de intervalmatch
Observe las dos tablas inferiores. La primera tabla muestra el inicio y el final de la producción de diferentes
pedidos. La segunda tabla contiene algunos eventos discretos. ¿Cómo podemos asociar los eventos
discretos con los pedidos para saber, por ejemplo, qué cambio afecta a qué pedidos y qué pedidos se
procesaron a causa de qué cambios?
Tabla OrderLog
Inicio Fin Orden
01:00 03:35 A
02:30 07:58 B
03:04 10:27 C
07:23 11:43 D
Tabla EventLog
Time Evento Comentario
Primero, cargue las dos tablas como de costumbre y después vincule el campo Time a los intervalos
definidos por los campos Start y End:
Tabla con el campo Time vinculado a los intervalos definidos por Inicio y Fin
Time Evento Comentario Orden Comienzo End
Ahora podemos ver fácilmente que el pedido A se vio afectado principalmente por la parada de línea, pero
que la velocidad reducida de la línea de producción también afectó a los pedidos B y C. Solo los pedidos C y
D fueron gestionados en parte por Shift 2.
l Antes de la sentencia intervalmatch , el campo que contiene los puntos de datos discretos (Time en
el ejemplo superior) ya debe haberse leído en Qlik Sense. La sentencia intervalmatch no lee este
campo desde la tabla de la base de datos.
l La tabla leída en la sentencia intervalmatch LOAD o SELECT siempre debe contener exactamente
dos campos (Start y End en el ejemplo anterior). Para definir un enlace a otros campos, debe leer los
campos de intervalo junto con campos adicionales en una sentencia aparte LOAD o SELECT (la
primera sentencia SELECT en el ejemplo anterior).
l Los intervalos están siempre cerrados. Es decir, los puntos finales se incluyen en el intervalo. Los
límites no numéricos hacen que se descarte el intervalo (no definido) mientras que los límites NULL
amplían el intervalo indefinidamente (ilimitado).
l Los intervalos pueden solaparse y los valores discretos se enlazarán con todos los intervalos
coincidentes.
IntervalTable:
LOAD Key, ValidFrom, Team
FROM 'lib://dataqv/intervalmatch.xlsx' (ooxml, embedded labels, table is IntervalTable);
Key:
LOAD
Key,
ValidFrom as FirstDate,
date(if(Key=previous(Key),
previous(ValidFrom) - 1)) as LastDate,
Team
RESIDENT IntervalTable order by Key, ValidFrom desc;
Transact:
LOAD Key, Name, Date, Sales
FROM 'lib://dataqv/intervalmatch.xlsx' (ooxml, embedded labels, table is Transact);
INNER JOIN intervalmatch (Date,Key) LOAD FirstDate, LastDate, Key RESIDENT Key;
La sentencia nullinterpret solo es necesaria cuando se leen datos desde un archivo de tabla, ya que los
valores inexistentes se definen como cadenas vacías, en lugar de valores NULL.
Cargar los datos desde IntervalTable dará como resultado la siguiente tabla:
000110 - Northwest
000120 - Northwest
La sentencia nullasvalue permite que los valores NULL se enlacen con los valores de la lista.
Crear Key, FirstDate, LastDate (campos de atributo) empleando previous y order by y por lo tanto
IntervalTable se elimina, siendo reemplazado por esta tabla clave.
Cargar los datos desde Transact dará como resultado la siguiente tabla:
La sentencia intervalmatch precedida por inner join remplaza la clave de arriba por una clave sintética que
conecta con la tabla Transact, dando como resultado la tabla siguiente:
Podría ser como sucede en la tabla a continuación, en la que hay tipos de cambio para múltiples divisas:
Cada cambio de tipo de divisa está en su propia fila, cada una de ellas con una nueva tasa de conversión.
Asimismo, la tabla contiene filas con fechas vacías que corresponden a la tasa de conversión inicial, antes de
que se hiciera el primer cambio.
Tipos de cambio
Moneda Fecha de cambio Tasa
EUR - 8.59
USD - 6.50
La tabla anterior define un conjunto de intervalos que no se superponen, donde los datos de inicio se llaman
“Change Date” y la fecha de finalización se define por el comienzo del siguiente intervalo. Pero, ya que la
fecha de finalización no se almacena de forma explícita en su propia columna, necesitamos crear esta
columna para que la nueva tabla se convierta en una lista de intervalos.
Haga lo siguiente:
Currency,Change Date,Rate
EUR,,8.59
EUR,28/01/2013,8.69
EUR,15/02/2013,8.45
USD,,6.50
USD,10/01/2013,6.56
USD,03/02/2013,6.30
];
4. Determine con qué rango de fechas desea trabajar. El inicio del rango debe ser anterior a la primera
fecha de los datos, y el final del rango debe ser posterior a la última.
Agregue lo siguiente a la parte superior de su script:
Let vBeginTime = Num('1/1/2013');
Let vEndTime = Num('1/3/2013');
Let vEpsilon = Pow(2,-27);
5. Cargue los datos de origen, pero cambie las fechas vacías en el principio del rango definido en el
punto anterior. La fecha de cambio debe cargarse como "From Date".
Ordene la tabla primero por Currency, después conforme a "From Date" descendente, de modo que
tenga las fechas más recientes en la parte superior.
Agregue lo siguiente tras la tabla In_Rates:
Tmp_Rates:
LOAD Currency, Rate,
Date(If(IsNum([Change Date]), [Change Date], $(#vBeginTime))) as FromDate
Resident In_Rates;
6. Ejecute un segundo pase a través de los datos donde se calcule el "To Date". Si el registro actual
tiene una moneda (currency) diferente del registro anterior, entonces es el primer registro de una
nueva moneda (pero su último intervalo), por lo que deberá usar el final del rango definido en el paso
1. Si es la misma moneda (currency), debe tomar el "From Date" del registro anterior, restar una
pequeña cantidad de tiempo y usar este valor como "To Date" en el registro actual.
Agregue lo siguiente tras la tabla Tmp_Rates:
Rates:
LOAD Currency, Rate, FromDate,
Date(If( Currency=Peek('Currency'),
Peek('FromDate') - $(#vEpsilon),
$(#vEndTime)
)) as ToDate
Resident Tmp_Rates
Order By Currency, FromDate Desc;
In_Rates:
LOAD * Inline [
Currency,Change Date,Rate
EUR,,8.59
EUR,28/01/2013,8.69
EUR,15/02/2013,8.45
USD,,6.50
USD,10/01/2013,6.56
USD,03/02/2013,6.30
];
Tmp_Rates:
LOAD Currency, Rate,
Date(If(IsNum([Change Date]), [Change Date], $(#vBeginTime))) as FromDate
Resident In_Rates;
Rates:
LOAD Currency, Rate, FromDate,
Date(If( Currency=Peek('Currency'),
Peek('FromDate') - $(#vEpsilon),
$(#vEndTime)
)) as ToDate
Resident Tmp_Rates
Order By Currency, FromDate Desc;
Esta tabla se puede usar posteriormente en una comparativa en una determinada fecha usando el método
Intervalmatch.
Tabla Nodos
IDNodo IDParentNode Título
1 - Director General
2 1 Director Regional
3 2 Director de Oficina
4 3 Director de Departamento
En este tipo de tabla, el nodo se almacena en un único registro, pero puede tener cualquier número de hijos.
La tabla puede por supuesto contener campos adicionales que describan atributos para los nodos.
Una tabla de nodos adyacentes es óptima para el mantenimiento, pero difícil de utilizar en el trabajo diario.
En las consultas y el análisis se suelen emplear otras representaciones en vez. La tabla de nodos expandidos
es una representación habitual, en la que cada nivel de la jerarquía se almacena en un campo aparte. Los
niveles en una tabla de nodos expandidos se pueden usar fácilmente, por ej. en una estructura de árbol. La
palabra clave hierarchy se puede usar en el script de carga de datos para transformar una tabla de nodos
adyacentes en una tabla de nodos expandidos.
Example:
Un inconveniente de la tabla de nodos expandidos es que no es fácil utilizar los campos de nivel para
búsquedas o selecciones, dado que se necesita un conocimiento previo acerca de qué nivel explorar o
seleccionar. Una tabla de antepasados supone una representación diferente que resuelve este problema.
Esta representación también se conoce con el nombre de tabla puente.
Una tabla de antepasados contiene un registro por cada relación hijo-antepasado que encuentra en los
datos. Contiene claves y nombres de los hijos y antepasados. Es decir, cada registro describe a qué nodo
pertenece un nodo específico. La palabra clave hierarchybelongsto se puede usar en el script de carga de
datos para transformar una tabla de nodos adyacentes en una tabla de ancestros.
l Datos de nombres en los campos para colocar ubicaciones en las capas del mapa.
l Campos que contienen geopuntos (latitud y longitud) en WGS-84.
l Campos que contienen geopuntos, polígonos o líneas de una fuente de datos geográficos, por
ejemplo un archivo KML.
l Campos que contienen geodatos en GeoJSON, LineString o formatos MultiLineString.
l Campos que contienen coordenadas no WGS-84 (cuando se usa un mapa personalizado como mapa
base).
Al cargar datos de mapas en el Gestor de datos con los perfiles de datos habilitados, el servicio de
perfilado de datos identificará nombres de países, nombres de ciudades y campos de latitud y longitud y
cargará las geometrías correspondientes en nuevos campos. En el Editor de carga de datos, puede, de
manera opcional, combinar campos de coordenadas en un solo campo para su comodidad.
l Nombres de continentes
l Nombres de países
l Códigos de país ISO alfa 2
l Códigos de país ISO alfa 3
l Nombres de divisiones administrativas de primer nivel, como el nombre de un estado o provincia
l Nombres de divisiones administrativas de segundo nivel
l Nombres de divisiones administrativas de tercer nivel
l Nombres de divisiones administrativas de cuarto nivel
l Nombres de ciudades, pueblos u otras poblaciones
l Códigos postales
Qlik Sense utiliza el mapa y los datos de ubicación obtenidos de reconocidos líderes del sector
que utilizan metodologías aceptadas y las mejores prácticas para marcar fronteras y nombrar
países dentro de sus asignaciones. Qlik Sense proporciona flexibilidad para permitir a los
usuarios integrar sus propios mapas de fondo. Si los mapas estándar no se ajustan, Qlik
Sense ofrece la opción de cargar mapas de fondo, bordes y áreas proporcionados por el
cliente.
Al agregar un campo de un campo KML a una capa de mapa, si el campo de nombre contiene datos de
nombre significativos, debe agregarse como la dimensión de la capa. El área o el campo de puntos se deben
agregar entonces como Campo de localización . No habrá diferencia en cómo se visualizan los datos en la
capa, y el texto en el campo de nombre se mostrará como información sobre herramientas.
Si el archivo KML no contiene datos de puntos, datos de línea o datos de área, no puede cargar
datos de ese archivo. Si el archivo KML file is corrupt, an error message is displayed, and you
will not be able to load the data.
Si los encuentra, se creará automáticamente un nuevo campo que contiene información geográfica.
Cuando utilice Añadir datos, el perfilado de datos debe estar habilitado. Esta es la opción por
defecto. Si deshabilita la generación de perfiles de datos, los datos geográficos no se detectan
y no se crea el nuevo campo con datos geográficos.
Qlik Sense analiza un subconjunto de datos para reconocer los campos que contienen
ciudades o países. Si el resultado es menor del 75 por ciento, no se creará un campo con
información geográfica. Si un campo no se reconoce como datos geográficos, puede cambiar
manualmente el tipo de campo a datos geográficos.
Para más información, vea Cambiar los tipos de campos (page 73).
Los campos con información geográfica no muestran los geopuntos o datos de polígonos en el panel de vista
previa de Asociaciones ni en la vista de Tablas. En su lugar, los datos se indican de forma genérica como
[GEO DATOS]. Esto mejora la velocidad con la que se muestran las vistas de Asociaciones y Tablas. Los
datos están disponibles, no obstante, cuando crea visualizaciones en la vista de Hoja .
l Los datos de puntos se almacenan en dos campos, uno para la latitud y otro para la longitud. Puede
agregar los campos a una capa de puntos en los campos de latitud y longitud en la capa de puntos.
Opcionalmente, puede combinarlos en un solo campo. Para combinarlos en un solo campo:
l Si utilizó Añadir datos con el perfilado de datos habilitado para cargar la tabla, se reconocen
los campos de latitud y longitud y se crea automáticamente un campo de geopunto.
l Si cargó los datos utilizando el script de carga de datos, puede crear un solo campo con datos
de puntos en el formato [x, y], usando la función GeoMakePoint().
Para más información, vea Ejemplo: Cargar datos de puntos de diferentes columnas de
latitud y longitud con el script de carga de datos (page 283).
l Los datos de puntos se almacenan en un campo. Cada punto se especifica como una matriz de
coordenadas x e y: [x, y]. Con coordenadas geoespaciales, esto correspondería a [longitud, latitud].
Cuando utilice este formato y cargue los datos en el Editor de carga de datos, se recomienda
etiquetar el campo de datos de puntos con $geopoint;.
Para más información: Ejemplo: Cargar datos de puntos desde una única columna con el script de
carga de datos (page 283).
En los ejemplos siguientes damos por sentado que los campos contienen los mismos datos sobre la
ubicación de las oficinas de una empresa, pero en dos formatos distintos.
l Oficina
l Latitud
l Longitud
l Número de empleados
LOAD
Office,
Latitude,
Longitude,
Employees
FROM 'lib://Maps/Offices.xls'
(biff, embedded labels, table is (Sheet1$));
Combine los datos de los campos Latitude y Longitude para definir un nuevo campo para los puntos.
Puede elegir crear la dimensión Location en el script agregando la siguiente cadena encima del comando
LOAD:
Se recomienda etiquetar el campo Office con $geoname para que se reconozca como el nombre de un
geopunto. Agregue las siguientes líneas después de la última cadena en el comando LOAD:
Ejemplo: Cargar datos de puntos desde una única columna con el script de carga de
datos
El archivo Excel incluye el contenido siguiente para cada oficina:
l Oficina
l Localización
l Número de empleados
LOAD
Office,
Location,
Employees
FROM 'lib://Maps/Offices.xls'
(biff, embedded labels, table is (Sheet1$));
El campo Location contiene los datos de puntos y se recomienda etiquetar el campo con $geopoint para que
se reconozca como un campo de datos de puntos. Se recomienda etiquetar el campo Office con $geoname
para que se reconozca como el nombre de un geopunto. Agregue las siguientes líneas después de la última
cadena en el comando LOAD:
LOAD
Office,
Location,
Employees
FROM 'lib://Maps/Offices.xls'
(biff, embedded labels, table is (Sheet1$));
TAG FIELDS Location WITH $geopoint;
TAG FIELDS Office WITH $geoname;
Tablas de correspondencia
Las tablas cargadas por medio de mapping load o mapping select se tratan de manera diferente a otras
tablas. Se almacenan en un área aparte de la memoria, y se usan solo como tablas de correspondencia
durante la ejecución del script. Después de la ejecución del script se borran automáticamente.
Reglas:
l Una tabla de correspondencia debe tener dos columnas, la primera con los valores de la comparación
y la segunda con los valores que se desea enlazar.
l Las dos columnas deben tener nombre, pero los nombres no tienen importancia por sí mismos. Los
nombres de las columnas no tienen conexión con los nombres de campo en las tablas internas
regulares.
Para evitar la aparición de tres registros diferentes que denotan el mismo país de los Estados Unidos de
América en la tabla concatenada, se puede crear una tabla parecida a la ya mostrada y cargarla como tabla
de correspondencia (o enlace).
CountryMap:
Mapping LOAD x,y from MappingTable.txt
(ansi, txt, delimiter is ',', embedded
labels);
Map Country using CountryMap;
LOAD Country,City from CountryA.txt
(ansi, txt, delimiter is ',', embedded labels);
LOAD Country, City from CountryB.txt
(ansi, txt, delimiter is ',', embedded labels);
La sentencia mapping carga el archivo MappingTable.txt como una tabla de correspondencia con la
etiqueta CountryMap.
La sentencia map habilita la asignación del campo Country usando la tabla de correspondencia cargada
previamente. CountryMap.
La sentencias LOAD cargan las tablas CountryA y CountryB. Estas tablas, que se concatenarán debido a
que tienen el mismo conjunto de campos, incluyen el campo Country, cuyos valores de campo se
compararán con los de la primera columna de la tabla de correspondencia. Los valores de campo US, U.S. y
United States serán encontrados y reemplazados por los valores de la segunda columna de la tabla de
correspondencia, es decir, U SA .
La correspondencia automática es el último paso en la cadena de eventos que lleva al campo que se está
almacenando en la tabla de Qlik Sense. Por lo general, el orden de eventos de una típica sentencia LOAD o
SELECT es el siguiente:
Esto significa que la correspondencia no se hace cada vez que se encuentra un nombre de campo como
parte de una expresión, sino más bien cuando el valor se almacena con el nombre de un campo de la tabla
de Qlik Sense.
Si crea una conexión de datos a un SQL Server y después reinicia SQL Server, la conexión de datos puede
que deje de funcionar y no pueda seleccionar datos. Qlik Sense ha perdido la conexión al SQL Server y no ha
podido volver a conectar.
Proposed action
Qlik Sense:
Haga lo siguiente:
Haga lo siguiente:
Possible cause
Si dos tablas contienen más de un campo común, Qlik Sense crea una clave sintética para solucionar ese
enlace.
Proposed action
En muchos casos no habrá que hacer nada con las claves sintéticas si el enlace funciona bien, pero siempre
es conveniente revisar la estructura de datos en el visor del modelo de datos.
Si ha cargado más de dos tablas, las tablas pueden asociarse de tal manera que haya más de una ruta de
asociaciones entre dos campos, ocasionando un bucle en la estructura de datos.
Proposed action
Si no puede seleccionar datos de una conexión de datos OLE DB, debe verificar cómo está configurada la
conexión.
Proposed action
Haga lo siguiente:
Possible cause
Las conexiones de datos ODBC no proporcionan capacidades completas para la codificación del juego de
caracteres.
Proposed action
Haga lo siguiente:
l Si es posible, importe los archivos de datos empleando una conexión de datos de carpeta, la cual
ofrece más opciones para el manejo de códigos de caracteres. Esta es probablemente la mejor
opción si está cargando una hoja de cálculo de Microsoft Excel o un archivo de datos de texto.
El conector no se ha instalado correctamente conforme a las instrucciones de instalación. Si una app utiliza
un conector en un sitio multi nodo, el conector debe instalarse en todos los nodos.
Proposed action
Haga lo siguiente:
l Verifique que el conector esté instalado de conformidad con las instrucciones en todos los nodos del
sitio.
Los conectores QlikView necesitan adaptarse a Qlik Sense si desea poder seleccionar datos.
Proposed action (si desarrolló el conector usted mismo con el QVX SDK)
Haga lo siguiente:
l Necesita adaptar el conector para Qlik Sense con una interfaz para seleccionar los datos.
Haga lo siguiente:
l Contacte con el proveedor del conector para adquirir un conector adaptado a Qlik Sense.
Proposed action
Haga lo siguiente:
Una cadena contiene un único carácter de comilla en, por ejemplo, una sentencia de una variable SET.
Proposed action
Haga lo siguiente:
l Si una cadena contiene un único carácter de comilla, necesita terminar con otro carácter único de
comilla.
El archivo utiliza tabuladores entre columnas. Normalmente verá que las cabeceras de campo no se alinean
con los datos esperados si selecciona Saltos de campo en el diálogo de selección.
Proposed action
Haga lo siguiente:
Las columnas ahora se alinean como es debido y cada campo debe mostrar su nombre de campo correcto.
El nombre del archivo es demasiado largo. Qlik Sense solo admite nombres de archivo de hasta 171
caracteres.
Proposed action
El script de carga se refiere a archivos utilizando rutas absolutas, lo cual no se admite en el modo estándar
de Qlik Sense. Ejemplos de mensajes de error son "Invalid Path" y "LOAD statement only works with lib://
paths in this script mode".
Proposed action
Haga lo siguiente:
l Reemplace todas las referencias a archivos por referencias lib:// a conexiones de datos en Qlik
Sense.
Si recibe un error de sintaxis al ejecutar el script en el editor de carga de datos, puede que esté relacionado
con el uso de sentencias de script QlikView o funciones no admitidas en Qlik Sense.
Proposed action
Haga lo siguiente:
Puede encontrar problemas al configurar una conexión de datos ODBC a un archivo Microsoft Excel o al
cargar datos desde archivos de Microsoft Excel a través de una conexión de datos ODBC. Esto normalmente
se debe a problemas con la configuración de ODBCDSN en Windows o problemas con los drivers ODBC
asociados.
Proposed action
Qlik Sense tiene soporte nativo para cargar archivos Microsoft Excel. Si es posible, reemplace la conexión de
datos ODBC por una conexión de datos de carpeta que conecte con la carpeta que contiene los archivos de
Microsoft Excel.
Possible cause
El archivo se almacena en un archivo ZIP. No es posible adjuntar archivos individuales desde un archivo ZIP
en Qlik Sense.
Proposed action
Possible cause
Cuando agregó las tablas, mantuvo la opción predeterminada de habilitar el perfilado de datos en el cuadro
de diálogo Añadir datos. Esta opción califica automáticamente todos los nombres de campo que son
comunes entre tablas. Por ejemplo, si añade la tabla A y la tabla B con un campo común F1 usando esta
opción, el campo se denominará F1 en la tabla A y B.F1 en la tabla B. Esto significa que las tablas no se
asocian automáticamente.
Proposed action
Abra el Gestor de datos y seleccione la vista Asociaciones. Ahora puede asociar las tablas basándose en
las recomendaciones de perfilado de datos.
Cuando agregó las tablas, deshabilitó la creación de perfiles de datos en ¥ junto al botón Añadir datos.
Con esta opción, los campos de fecha y fecha-hora que se reconozcan funcionarán correctamente, pero no
se indican mediante G en el panel de activos y otras listas de campos, y los campos de propiedades
expandidos no están disponibles.
Proposed action
Ahora, todos los campos de fecha y fecha-hora deben indicarse mediante G en el panel de activos de la
vista de hoja. Si todavía no se indican mediante G , los datos de campo probablemente están utilizando un
formato que no se reconoce como una fecha.
El formato de entrada del campo de fecha no se ha reconocido al cargar la tabla. Normalmente Qlik Sense
reconoce los campos de fecha automáticamente, basándose en las configuraciones locales y los formatos de
fecha habituales, pero en algunas ocasiones puede que tengamos que especificar el formato de entrada.
Proposed action
Abra el Gestor de datos y edite la tabla que contiene el campo que no se reconoció como una fecha. El
campo probablemente se indique con ⏪ como un campo general. Cambie el tipo de campo a Fecha o
Fecha-hora , con un formato de entrada que coincida con los datos de campo.
Possible cause
El modelo de datos mejorado en Qlik Sense 3.0 y posteriores requiere una carga de datos para completar la
descripción y preparación de datos.
Proposed action
Haga clic en Cargar datos en el gestor de datos. Esto requiere que la app puede acceder a las fuentes de
datos que se utilizan en la app.
Possible cause
El Gestor de datos utiliza archivos QVD para almacenar en caché los datos cargados. Estos archivos se
eliminan automáticamente cuando ya no se usan, pero si se acumulan en gran número o si se corrompen,
pueden ocasionar errores.
Proposed action
Elimine la carpeta que contiene los archivos QVD. En un servidor Qlik Sense, la caché se encuentra en:
C:\Users\<username>\Documents\Qlik\Sense\Apps\DataPrepAppCache
Proposed action
Elimine la carpeta que contiene los archivos QVD. En un servidor Qlik Sense, la caché se encuentra en:
C:\Users\<username>\Documents\Qlik\Sense\Apps\DataPrepAppCache
Possible cause
El script contiene construcciones muy complejas, por ejemplo, una gran cantidad de sentencias if anidadas.
Proposed action
Abra el editor de carga de datos en modo seguro añadiendo /debug/dle_safe_mode a la URL. Esto
desactivará el resaltado de sintaxis y las funciones de autocompletar, pero debería poder editar y guardar el
script.
Considere mover las partes complejas de la secuencia de script a un archivo de texto aparte, y
utilice la variable include para insertarla en el script en tiempo de ejecución.