SPECIMEN · EXPERTUS MANTIDAE

Guía de campo de Q-Expert

Q-Expert es un framework visual para desarrolladores Qlik: construyes el pipeline de carga como un canvas de nodos — RAW, JOIN, MAPPING, CROSSTABLE, LOOP, IF/THEN, CALL — y Q-Expert genera la sintaxis LOAD/STORE real a partir de ese modelo. Esta guía recorre cada tipo de nodo y cada herramienta, de lo más simple a lo más complejo, con ejemplos reales tomados de la propia app.

RAW · JOIN · LOOP · IF/THEN · CALL
Mascota de Q-Expert
01

Qué es Q-Expert

Un canvas de nodos en vez de un editor de texto plano — cada bloque del script LOAD de Qlik (una fuente, un JOIN, una transformación) es un nodo visible y conectado, no una línea perdida en medio de 300 líneas de script.

El Developer arrastra nodos desde la paleta superior, los conecta arrastrando desde sus puertos, y configura cada uno en el Panel de Propiedades a la derecha. El canvas completo — con todas sus conexiones — es la única fuente de verdad: el script Qlik final (Generar Sintaxis) se deriva de él, nunca al revés.

Por qué importa — un script Qlik de 500 líneas es difícil de auditar línea por línea. El mismo pipeline como canvas se lee en segundos: el flujo de datos es literalmente la forma del diagrama.
02

La Interfaz

Cuatro zonas fijas — Biblioteca, Canvas, Panel de Propiedades, Toolbars — más las dos barras de herramientas que controlan todo lo demás. Antes de entrar a construir nada, vale la pena saber qué hace cada una.

Biblioteca (Library Panel)

La columna izquierda. Registra los archivos fuente (QVD, CSV, XLSX) disponibles para el proyecto activo — + Add Files para agregar nuevos, el buscador para filtrar cuando hay muchos. Arrastra cualquier archivo desde aquí hacia el canvas para crear un nodo RAW ya apuntando a él.

Biblioteca
Library Panel

El Canvas

El área central, donde se construye el modelo. Cada nodo es una tarjeta o un círculo arrastrable; las líneas entre ellos son el flujo de datos real. Clic en un nodo lo selecciona (y lo muestra en el Panel de Propiedades); arrastrar desde un puerto crea una conexión nueva.

Canvas con nodos
Canvas

Panel de Propiedades

La columna derecha. Su contenido cambia por completo según el tipo de nodo seleccionado — un RAW muestra pestañas Config/Columns/Expressions/Info; un JOIN muestra el tipo de combinación y sus tablas de entrada; un nodo circular pequeño (DROP, CHECKPOINT, LET/SET…) muestra su propio formulario corto. Cada capítulo de Tipos de Nodo de esta guía incluye una captura real de lo que este panel muestra para ese nodo en particular. Sin ninguna selección, queda vacío ("Click a node to configure it").

Panel de Propiedades — ejemplo con un nodo TXF
Panel de Propiedades

Toolbar Principal

La franja superior de la aplicación — acciones a nivel de proyecto y de cuenta, no del canvas.

Toolbar Principal
Toolbar Principal
ToolQué hace
New ProjectCrea un proyecto en blanco.
Open ProjectAbre un proyecto existente de la lista.
SaveGuarda el proyecto activo (deshabilitado automáticamente en los proyectos Demo).
Duplicate ProjectCrea una copia independiente del proyecto activo.
Variables $(x)Abre la lista de variables y parámetros del proyecto.
Project SettingsNombre de tablas, rutas de origen, prefijos, carpeta de despliegue, encabezado de script.
Toggle LibraryMuestra u oculta la Biblioteca.
Toggle PropertiesMuestra u oculta el Panel de Propiedades.
Export QEPDescarga el proyecto como archivo .qep.
Import QEPCarga un archivo .qep a la lista de proyectos.
Reverse EngineeringConvierte un script Qlik existente en un canvas de nodos.
Generate SyntaxGenera el script Qlik LOAD/STORE final.
TemplatesProyectos de plantilla como punto de partida.
Routine CatalogBiblioteca de subrutinas Qlik reutilizables.
SettingsPreferencias de toda la app — colores, prefijos, formatos, demos.
Report a bugAbre el formulario de reporte de errores / sugerencias dentro de la app.
Sign Out / Sign InControl de sesión de la cuenta.

Toolbar de Nodos y Diseño

La segunda franja, debajo de la principal — crear nodos y controlar la vista del canvas. La mayoría de sus botones crean un nodo nuevo del tipo indicado (cada uno con su propio color, el mismo que lleva después en el canvas) — ver el capítulo de ese tipo de nodo más adelante en esta guía para el detalle completo. Cuando la ventana es angosta, los botones que no caben se agrupan bajo un botón ··· al final de la barra.

Toolbar de Nodos y Diseño
Toolbar de Nodos y Diseño
ToolQué hace
Find (Ctrl+K)Salta a un nodo por nombre.
DuplicateDuplica el/los nodo(s) seleccionados.
Script SplitCrea un nodo Script Split — divide el script generado en archivos separados a partir de ese punto.
Toggle CHKMarca/desmarca el nodo seleccionado para Checkpoint rápido, sin crear un nodo CHECKPOINT aparte.
RenameCrea un nodo RENAME — renombra una tabla completa en el flujo (distinto del lápiz de renombrar columnas individuales).
TraceCrea un nodo TRACE — imprime un mensaje de diagnóstico en el log de carga de Qlik en ese punto del flujo.
Qualify / UnqualifyCrea un nodo Qualify/Unqualify.
Zoom OutAleja la vista del canvas.
Zoom InAcerca la vista del canvas.
Reset ZoomVuelve el zoom a 100%.
Auto LayoutReorganiza automáticamente los nodos del canvas.
Print CanvasExporta/imprime la vista actual del canvas como imagen.
MinimapMuestra un mapa en miniatura de todo el canvas, útil en proyectos grandes.

Entidades, Operaciones y Control de Flujo, cada uno con su propio botón en esta barra — RAW, INLINE, AUTOGENERATE, BUSINESS, JOIN, CONCATENATE, CROSSTABLE, MAPPING, IntervalMatch, CHECKPOINT, DROP, LET/SET, SWITCH, IF/THEN, LOOP, CALL, Raw Script. Ver el capítulo de cada uno más abajo.

03

El Canvas y la Biblioteca

La Biblioteca a la izquierda registra los archivos fuente (QVD, CSV, XLSX) disponibles para el proyecto; el canvas al centro es donde se construye el modelo; el Panel de Propiedades a la derecha configura el nodo seleccionado.

  • Biblioteca de archivosCada archivo agregado a la Biblioteca queda disponible para cualquier nodo RAW del proyecto — arrastra el archivo al canvas para crear un nodo RAW ya apuntando a él, o asígnalo después desde el Panel de Propiedades.
  • Paleta de nodosLa barra superior agrupa los nodos disponibles por categoría — Entidades, Operaciones, Control de Flujo — cada ícono con su color distintivo, el mismo color que lleva el nodo en el canvas y en el badge de estadísticas al pie.
  • ConexionesArrastra desde el puerto de salida de un nodo hasta el puerto de entrada de otro para conectar el flujo de datos — la app valida en vivo qué conexiones son válidas según el tipo de ambos nodos (por ejemplo, un SWITCH solo acepta como entrada nodos con filas reales, no otro SWITCH).
  • Panel de PropiedadesTodo lo que configura un nodo vive aquí: columnas, filtros, expresiones, claves. El panel cambia de contenido según el tipo de nodo seleccionado, y queda vacío ("Click a node to configure it") cuando no hay selección.
  • Qué significa cada líneaUna línea sólida es flujo de datos real entre dos tablas. Una línea punteada conecta hacia un nodo satélite (DROP, CHECKPOINT, RENAME, TRACE, LET/SET, QUALIFY) o hacia una KEY — no es un flujo de datos adicional, es una relación de control o de asociación. Una línea violeta de guiones cortos (poco común) marca un Preceding Load: dos cajas que en realidad son el mismo LOAD de Qlik partido en dos, no dos tablas distintas.
Canvas, Biblioteca y Panel de Propiedades
Canvas de Q-Expert
04

¿Cómo empezar entonces?

La forma más rápida de aprender Q-Expert no es leer — es construir un pipeline real una vez, con la app guiándote paso a paso. Eso es exactamente lo que hace el Tutorial Guiado.

Ve a Configuración → Demos → Start Tutorial. Se abre un proyecto de práctica dedicado y un overlay con spotlight que resalta, en la app real, exactamente dónde hacer clic en cada paso — nunca una simulación aparte. Tú controlas el ritmo: Next/Back, Pausar para explorar libremente y Reiniciar, en cualquier momento.

  • 1 · Un nodo RAW ya servidoEl tutorial simula el paso de agregar un archivo a la Biblioteca y arrastrarlo al canvas — empiezas ya con un nodo RAW real para no perder tiempo en configuración de ejemplo. Ver RAW.
  • 2 · Renombrar una columnaAbre el diálogo real de Rename Column, pre-llenado — tú decides cuándo aplicarlo. Ver Manage Columns y Rename.
  • 3 · Un TXF se construye soloQ-Expert arma el nodo TXF y lo conecta — así se ve el resultado de una transformación antes de que tú tengas que crear una desde cero.
  • 4 · Expression Builder con un ejemplo realSe abre con Upper(Trim(ClienteID)) ya escrito — exploras el editor real, con sus categorías de función, antes de escribir tu propia expresión. Ver Expression Builder.
  • 5 · Key Builder, llave realSeleccionas la columna y haces clic en el botón real de crear llave — se crea un nodo KEY de verdad en tu canvas de práctica. Ver Key Builder.
  • 6 · JOIN y BUSINESSUn segundo RAW y el JOIN que los combina aparecen solos, seguidos del nodo BUSINESS de salida — el pipeline completo, de principio a fin, en un solo recorrido.
  • 7 · Generar SintaxisEl diálogo real de sintaxis se abre al final — explóralo con calma, sin límite de tiempo, antes de cerrar el tutorial. Ver Generar Sintaxis.
Por qué importa — cada ventana que el tutorial abre es la ventana real de la app, no una captura ni una simulación aparte — lo que aprendes ahí es exactamente lo que vas a usar el lunes con tus propios datos.
Tutorial Guiado en progreso
Tutorial Guiado

Ver también el capítulo completo: Tutorial Guiado.

05

RAW

La puerta de entrada de cualquier dato al modelo: un nodo RAW carga un archivo de la Biblioteca (QVD, CSV, XLSX) o una fuente RESIDENT/directa, con sus columnas, filtros WHERE y transformaciones de carga.

Cada RAW muestra en su tarjeta el número de transformaciones activas y el conteo de columnas (por ejemplo 4 tx · 9/9 cols) — una forma rápida de ver, sin abrir el panel, si el nodo ya tiene lógica aplicada o todavía es una carga directa del archivo.

Nodo RAW seleccionado
Nodo RAW
Panel de Propiedades — RAW
Panel de Propiedades de RAW
06

INLINE

Una tabla de datos escrita directamente en el canvas — sin archivo fuente — para catálogos pequeños, listas de mapeo o datos de referencia que no ameritan un QVD aparte.

Se define igual que un LOAD INLINE de Qlik: encabezados en la primera fila, valores separados por coma. Es también el destino natural de Options → Inline for Q-Expert en Q-Explorator — copia una selección de celdas allá y pégala aquí, ya con el formato correcto.

Nodo INLINE
Nodo INLINE
Panel de Propiedades — INLINE
Panel de Propiedades de INLINE
07

AUTOGENERATE

Genera una secuencia de filas sintéticas — típicamente un rango de fechas o de números — sin depender de ningún archivo externo. Es el punto de partida habitual de un Master Calendar.

Nodo AUTOGENERATE
Nodo AUTOGENERATE
Panel de Propiedades — AUTOGENERATE
Panel de Propiedades de AUTOGENERATE
08

CROSSTABLE

Convierte una tabla ancha (una columna por mes, por ejemplo Ene, Feb, Mar…) en una tabla alta de atributo/valor — el equivalente visual al CROSSTABLE LOAD de Qlik.

Define cuántas columnas iniciales se conservan como calificadoras (el eje que no se pivotea) y el nombre que tomarán la nueva columna de atributo y la de valor resultantes.

Nodo CROSSTABLE
Nodo CROSSTABLE
Panel de Propiedades — CROSSTABLE
Panel de Propiedades de CROSSTABLE
09

BUSINESS

El nodo de salida final de una rama del modelo: la tabla de negocio tal como quedará disponible para el resto de la app Qlik, con sus pestañas de configuración propias.

Nodo BUSINESS
Nodo BUSINESS
Panel de Propiedades — BUSINESS
Panel de Propiedades de BUSINESS
10

JOIN / CONCATENATE

Las dos formas de combinar dos flujos de datos en uno: JOIN los une por columnas en común (LEFT, INNER, OUTER); CONCATENATE los apila uno sobre otro sin necesidad de columnas compartidas.

El nodo JOIN muestra el tipo de combinación elegido (por ejemplo LEFT JOIN) y una descripción corta de a dónde se fusionan los datos (merges into Fact_Ventas_TXF). Conecta dos o más nodos de entrada y el que recibe la unión queda marcado como destino.

JOIN vs. CONCATENATE — usa JOIN cuando las dos tablas describen la misma entidad con columnas clave compartidas (Ventas + Clientes por ClienteID); usa CONCATENATE cuando son la misma estructura repetida en el tiempo o la fuente (ventas de enero + ventas de febrero).
Nodo JOIN
Nodo JOIN
Panel de Propiedades — JOIN
Panel de Propiedades de JOIN

Nombrar el resultado combinado (Name the merged result)

Por defecto, el resultado de un JOIN no tiene identidad propia: el nodo TXF conectado aguas abajo absorbe los datos combinados directamente bajo su propio nombre, y no se crea ninguna tabla extra solo para el merge. Es el comportamiento de siempre, y el que conviene en la mayoría de los casos.

Marca Name the merged result cuando quieras que el JOIN en sí mismo sea una tabla real, con nombre propio, en el script generado — por ejemplo porque varios nodos distintos necesitan leer ese resultado combinado por RESIDENT, o porque quieres que el script final muestre esa tabla intermedia explícitamente en vez de que quede invisible, fusionada dentro del siguiente TXF. El campo de texto que aparece (placeholder MergedResult) es el nombre que tomará esa tabla.

Qué hacer después de nombrarlo — si necesitas aplicar WHERE, GROUP BY o columnas calculadas sobre el resultado ya nombrado, no lo hagas en el propio nodo JOIN — conecta un TXF nuevo desde este nodo y trabaja ahí. El nodo JOIN con nombre propio solo genera el merge; cualquier transformación adicional es trabajo de un TXF aguas abajo, igual que con cualquier otra tabla.

Inputs de este JOIN / CONCATENATE — incrustar o copia filtrada

Debajo de Inputs of this JOIN (o CONCATENATE) aparece cada tabla de entrada conectada, con dos controles por fila:

  • Casilla de incrustar (embed)Marcada: el LOAD de esa tabla se escribe literalmente DENTRO del JOIN/CONCATENATE — no se genera una tabla separada para ella, ahorrando un paso en el script. Solo está disponible cuando esa tabla se usa únicamente como entrada de este nodo — si también alimenta otro nodo (otro JOIN, un CHECKPOINT, un TRACE…), la casilla aparece deshabilitada con la nota "used elsewhere too, stays its own table", porque esa otra conexión necesita que la tabla siga existiendo por su cuenta.
  • Insert filtered copyCrea un nodo TXF real y nuevo (nombrado "{Tabla}_Filtered"), ya conectado entre la fuente original y este JOIN/CONCATENATE — automáticamente incrustado. Sirve para cuando necesitas una versión modificada de una entrada solo para este merge en particular (un WHERE distinto, menos columnas, una columna calculada, DISTINCT, ORDER BY) sin tocar la tabla original, que puede seguir usándose sin cambios en cualquier otra parte del canvas. Una vez insertada, la fila muestra Edit (selecciona el nodo para configurarlo como cualquier TXF) y Remove (deshace la copia — la fuente vuelve a alimentar el merge directamente).

Embed all eligible marca de una vez todas las entradas que sí pueden incrustarse; Own table for all hace lo contrario — cada entrada vuelve a generar su propia tabla independiente.

Inputs of this JOIN — antes de insertar una copia
Inputs of this JOIN
Después de Insert filtered copy — Edit / Remove
Filtered copy aplicada

CONCATENATE usa exactamente los mismos controles

La sección Inputs of this CONCATENATE es el mismo mecanismo, renderizado por el mismo código — las mismas casillas de incrustar, el mismo Insert filtered copy, el mismo Embed all eligible / Own table for all. La única diferencia real es que CONCATENATE no tiene "Name the merged result" propio en la misma sección (no aplica, CONCATENATE no fusiona columnas), pero por lo demás, todo lo explicado arriba para JOIN funciona igual aquí.

Inputs of this CONCATENATE
Inputs of this CONCATENATE

Variables dentro de JOIN, CONCATENATE y FOREACH

Una copia filtrada insertada en un JOIN o CONCATENATE es, por dentro, un nodo TXF genuino — así que su WHERE, su GROUP BY y sus columnas calculadas pueden usar $(variable) exactamente con las mismas reglas que cualquier otro TXF del canvas. Ver Usando Variables en todo el Canvas.

Cuando el JOIN/CONCATENATE (con o sin copias filtradas) vive dentro del cuerpo de un Loop (FOREACH), aplica además la propagación de variables del bucle: la variable de control del FOREACH y cualquier LET/SET declarado en ese mismo cuerpo están disponibles en el WHERE o las columnas calculadas de cualquier copia filtrada que construyas ahí — sin ninguna configuración adicional. Ver Propagación de Variables hacia Bucles.

Caso típico — dentro de un FOREACH que itera archivos por región (vRegion), una copia filtrada de la tabla de Ventas con WHERE Region = '$(vRegion)' antes de unirla a Clientes — la misma lógica de filtro-por-iteración de siempre, ahora aplicada específicamente a una de las entradas del merge, no a la tabla completa.
11

MAPPING

Carga una tabla de mapeo (clave → valor) para usarla después con ApplyMap() en cualquier expresión o transformación del resto del canvas — el equivalente visual al MAPPING LOAD de Qlik.

Nodo MAPPING
Nodo MAPPING
Panel de Propiedades — MAPPING
Panel de Propiedades de MAPPING
12

DROP

Marca una tabla para ser eliminada del modelo en memoria una vez que ya cumplió su propósito (por ejemplo, una tabla temporal usada solo como entrada de un JOIN) — el equivalente visual a DROP TABLE.

Nodo DROP
Nodo DROP
Panel de Propiedades — DROP
Panel de Propiedades de DROP
13

KEY

Genera una clave sintética (SK — synthetic key) a partir de una o más columnas, normalmente construida con el Key Builder para evitar claves sintéticas accidentales de Qlik entre tablas con varias columnas en común.

Nodo KEY
Nodo KEY
Panel de Propiedades — KEY
Panel de Propiedades de KEY
14

CHECKPOINT

Persiste el estado actual del flujo a un archivo (QVD, TXT o Parquet) en un punto intermedio del modelo — útil para incremental load, depuración, o simplemente como punto de control antes de una transformación arriesgada.

Nodo CHECKPOINT
Nodo CHECKPOINT
Panel de Propiedades — CHECKPOINT
Panel de Propiedades de CHECKPOINT
15

LOOP (FOR EACH / Bucles)

Repite un subcanvas completo una vez por cada elemento de una lista — archivos de una carpeta, valores de un campo, o un rango numérico — el equivalente visual a FOR EACH … NEXT o FOR i = 1 TO n.

Al hacer doble clic (o Enter Loop) sobre un nodo LOOP se entra a su cuerpo: un canvas anidado e independiente, con su propio set de nodos, donde se construye la lógica que se repetirá en cada iteración. El botón Exit Loop en la esquina regresa al canvas padre.

La Biblioteca, las variables del proyecto raíz y los Parámetros se comparten automáticamente con el cuerpo del Loop — no hay que volver a registrar el archivo fuente ni la variable dentro del bucle. Ver Propagación hacia Bucles.

Nodo LOOP y su cuerpo
Nodo LOOP
Exit Loop
Cuerpo del Loop
Panel de Propiedades — LOOP
Panel de Propiedades de LOOP
16

SWITCH / CASE

Ramifica el flujo en distintas rutas según el valor de una condición — el equivalente visual a un bloque IF…ELSEIF…ELSEIF…END IF con más de dos salidas, o a un CASE en otros lenguajes.

Cada rama del SWITCH puede tener una fuente de datos completamente distinta — un RESIDENT, un INLINE, un archivo — siempre que las tres terminen produciendo la misma estructura de columnas aguas abajo.

Nodo SWITCH con sus ramas
Nodo SWITCH
Panel de Propiedades — SWITCH
Panel de Propiedades de SWITCH
17

IF / THEN / ELSE

Elige entre dos rutas excluyentes según una condición booleana — por ejemplo, un feed en vivo si está disponible, o una tasa de respaldo si no — el equivalente visual a un IF…THEN…ELSE…END IF simple.

Nodo IF/THEN/ELSE
Nodo IF/THEN/ELSE
Panel de Propiedades — IF/THEN/ELSE
Panel de Propiedades de IF/THEN
18

CALL

Invoca una rutina (subrutina Qlik) previamente definida en el Catálogo de Rutinas, pasando los parámetros que la rutina declare — el equivalente visual a CALL NombreRutina(param1, param2).

Útil para lógica reutilizable entre varios puntos del mismo proyecto, o entre proyectos distintos cuando la rutina vive en una Biblioteca de Rutinas compartida (Q-Expert.Tools). Ver Catálogo de Rutinas.

Nodo CALL
Nodo CALL
Panel de Propiedades — CALL
Panel de Propiedades de CALL
19

Raw Script

Un escape hatch: código Qlik escrito a mano, para esa sentencia puntual que ningún tipo de nodo modela todavía. Es también el destino por defecto cuando la Ingeniería en Reversa encuentra una línea de script que no puede mapear a un nodo conocido.

Úsalo con moderación — un Raw Script no participa del análisis visual del resto del canvas (no se valida contra otros nodos, no aparece en el linaje de columnas). Resérvalo para lo verdaderamente excepcional, no como atajo habitual.
Nodo Raw Script
Nodo Raw Script
Panel de Propiedades — Raw Script
Panel de Propiedades de Raw Script
20

LET / SET

Declara o asigna una variable Qlik en ese punto del flujo — LET evalúa la expresión antes de asignarla, SET la asigna tal cual, sin evaluar.

Una variable declarada con LET/SET dentro de un Loop se comporta exactamente como la variable de control del propio Loop: ambas quedan disponibles en cualquier picker de variables del resto del cuerpo del bucle. Ver Propagación hacia Bucles.

Nodo LET/SET
Nodo LET/SET
Panel de Propiedades — LET/SET
Panel de Propiedades de LET/SET
21

Manage Columns y Rename

Cada nodo con columnas reales (RAW, TXF, INLINE, JOIN…) lista sus columnas en la tarjeta del canvas y en el Panel de Propiedades, con un lápiz de renombrar junto a cada una.

Renombrar una columna no rompe su identidad interna: Q-Expert rastrea cada columna por una referencia estable, independiente del nombre visible — así que una expresión, una clave o un JOIN construidos sobre esa columna antes de renombrarla siguen funcionando después.

El mismo panel de columnas permite agregar una columna calculada nueva o quitar una que no se necesita aguas abajo — sin tocar el archivo fuente ni reabrir el nodo RAW original. Es la forma normal de dar forma final a una tabla antes de que llegue al BUSINESS.

Por qué importa — en un script Qlik plano, agregar o quitar una columna significa editar texto en medio de un LOAD y confiar en no romper nada alrededor. Aquí es un clic en la lista de columnas — el resto del pipeline no se entera, salvo que dependiera de esa columna.
Columnas de un nodo TXF
Manage Columns
Diálogo de renombrar columna
Rename Column
22

Expression Builder

Un editor de expresiones con autocompletado de columnas y variables, categorías de funciones Qlik (Texto, Fecha/Hora, Numérico, Condicional, Mapping, Agregación…) y un asistente (Wizard) para las más usadas.

Haz clic en una columna o variable de la lista lateral para insertarla en el cursor; haz clic en una función de la fila inferior para insertarla con sus paréntesis listos para completar los argumentos. El campo Column alias define el nombre con el que la columna calculada quedará disponible aguas abajo.

Lo que lo hace distinto — las funciones no son una lista para memorizar: aparecen como tarjetas clasificadas por categoría (Text, Date/Time, Numeric, Conditional, Mapping, Aggregation…) y cada clic inserta la función completa con sus paréntesis y comas ya puestos, lista para rellenar los argumentos — el Developer arma la expresión por reconocimiento visual, no por recordar la sintaxis exacta de memoria.
-- Ejemplo típico: limpiar un identificador antes de usarlo como clave -- Upper(Trim(ClienteID))
Expression Builder
Expression Builder
23

Key Builder

Construye una clave sintética (SK) a partir de una o más columnas seleccionadas, evitando que Qlik genere su propia clave sintética automática — generalmente menos legible — cuando dos tablas comparten más de una columna.

Selecciona las columnas que compondrán la clave y confirma con Create SK key — esto crea un nodo KEY real en el canvas, conectado al nodo de origen, listo para unirse con JOIN a cualquier otra tabla que comparta esas mismas columnas.

Lo que lo hace distinto — toda clave construida con el Key Builder sigue el mismo estándar de nombres en todo el proyecto — el prefijo %SK_ para claves surrogadas y %CK_ para compuestas (configurables en Configuración → Prefixes), siempre el mismo criterio sin importar quién construyó cada parte del modelo. Dos Developers distintos, o el mismo Developer seis meses después, reconocen una llave asociativa a simple vista — y evitan que Qlik genere sus propias claves sintéticas automáticas, casi siempre menos legibles.
Key Builder
Key Builder
24

Generar Sintaxis

Convierte el canvas completo — con todos sus nodos y conexiones — en el script Qlik LOAD/STORE final, listo para copiar o descargar.

El selector de Environment Profile en la parte superior del diálogo cambia, de un clic, las rutas lib:// y la carpeta de exportación física que usa el script generado — sin tocar un solo nodo del canvas. El mismo modelo produce el script correcto para Desarrollo, Pruebas o Producción según qué perfil esté activo.

Por qué importa — mover un proyecto entre ambientes normalmente significa buscar y reemplazar rutas a mano en todo el script, con el riesgo de dejar una olvidada. Con un Environment Profile por ambiente, cambiar de Desarrollo a Producción es elegir un nombre en una lista — el canvas, las conexiones y la lógica siguen siendo exactamente los mismos.
Diálogo de Generar Sintaxis
Generar Sintaxis
25

Ingeniería en Reversa

El camino inverso: pega o carga un script Qlik existente y Q-Expert lo analiza línea por línea, creando un nodo por cada sentencia que reconoce — RAW, JOIN, LET/SET, CALL, LOOP — y un nodo Raw Script para lo que no logra mapear.

El resumen final muestra cuántos nodos se crearon, cuántas líneas quedaron como Raw Script sin convertir (para revisión manual) y cuántos supuestos tuvo que asumir el analizador — por ejemplo, el tipo de archivo de una carga sin extensión explícita.

Por qué importa — es la forma más rápida de traer a Q-Expert un script Qlik heredado, escrito por otra persona o en otra herramienta, sin tener que reconstruir el pipeline nodo por nodo desde cero.
Resultado de Ingeniería en Reversa
Ingeniería en Reversa
26

Catálogo de Rutinas

Una biblioteca de subrutinas Qlik reutilizables (SUB … END SUB), organizadas en Bibliotecas de Rutinas que se pueden cargar en cualquier proyecto e invocar desde un nodo CALL.

Selecciona una rutina de la lista para ver su firma completa (nombre y parámetros) y el cuerpo del script. + Load Library agrega una biblioteca de rutinas externa al proyecto actual; Download Q-Expert.Tools descarga la biblioteca de utilidades estándar incluida con Q-Expert.

Catálogo de Rutinas
Catálogo de Rutinas
27

Master Calendar Wizard

Genera automáticamente un calendario maestro completo — AUTOGENERATE de fechas más todas las columnas derivadas habituales (Año, Mes, Trimestre, Semana, Nombre del Mes…) — sin tener que armar esa lógica nodo por nodo.

Master Calendar Wizard
Master Calendar Wizard
28

Tutorial Guiado

Un recorrido interactivo que construye un pipeline real paso a paso — RAW, Rename, TXF, Expression Builder, Key Builder, JOIN, BUSINESS, Generar Sintaxis — abriendo las ventanas reales de la app en cada paso, a tu propio ritmo.

Se inicia desde Configuración → Demos → Start Tutorial. Cada paso espera a que tú actúes — no hay temporizadores ni avances automáticos — y puedes minimizarlo en cualquier momento para explorar libremente el proyecto de práctica y luego retomarlo donde quedaste.

Tutorial Guiado en progreso
Tutorial Guiado

Demos — cinco proyectos de ejemplo, explorables en cualquier momento

Distinto del Tutorial Guiado: los Demos son cinco proyectos completos ya construidos, en Configuración → Demos, pensados para explorarse libremente — abrir, hacer clic en cualquier nodo, ver cómo está armado — en vez de seguir un recorrido paso a paso. Cada uno cubre un conjunto distinto de tipos de nodo, así que juntos funcionan como una referencia rápida de "cómo se ve esto armado de verdad". Un Demo nunca se puede guardar (Save queda deshabilitado) — recarga siempre su versión original, así que explorarlo no tiene riesgo de dejarlo distinto a como estaba.

DemoCubre
Ventas y ClientesRAW, INLINE, KEY, JOIN, DROP, MAPPING, TXF, CHECKPOINT, LET/SET, TRACE, RENAME, Script Split, BUSINESS — el pipeline más completo de los cinco, buen punto de partida general.
Comisiones por CanalSWITCH/CASE con tres ramas independientes (RESIDENT, INLINE, carga desde archivo) — cómo una sola estructura de columnas puede llegar por caminos distintos.
Tipo de CambioIF/THEN/ELSE — feed en vivo si está disponible, tasa de respaldo si no, con un CHECKPOINT de por medio.
Calendario y PresupuestoAUTOGENERATE + CROSSTABLE con llaves SK — la base de un Master Calendar construida a mano, columna por columna.
Promociones y Validación RegionalIntervalMatch + LOOP (FOR EACH) con canvas anidado — el único de los cinco que muestra un cuerpo de Loop real, con su propia variable de control en uso.
Configuración → Demos
Lista de Demos

El botón Start Tutorial que lanza el Tutorial Guiado vive en esta misma pestaña — construye su propio proyecto de práctica aparte, independiente de estos cinco Demos.

29

Exportar / Importar (.qep)

Un proyecto Q-Expert completo — todos sus nodos, conexiones y configuración — se guarda como un único archivo .qep (Q-Expert Project), para compartirlo con otro Developer o moverlo entre máquinas.

Exportar serializa el proyecto activo a un archivo .qep con marca de fecha en el nombre. Importar lee un .qep y lo agrega a la lista de proyectos, resolviendo automáticamente los nombres duplicados si ya existe un proyecto con el mismo nombre.

Rutas de biblioteca entre máquinas — las rutas lib:// de los archivos fuente son específicas de cada instalación. Al importar un .qep de otra máquina, Q-Expert avisa si alguna ruta de biblioteca no coincide localmente, para que la reasignes antes de generar sintaxis.
Menú de Exportar / Importar proyecto
Exportar / Importar
30

Usando Variables en todo el Canvas

Las variables de un proyecto — tanto las declaradas como Parámetro del proyecto como las creadas con un nodo LET/SET en el canvas principal — están disponibles en cualquier picker de variables de la app: el editor WHERE, el Fx Wizard, y la barra lateral del Expression Builder.

Esto significa que una variable definida una sola vez (por ejemplo $(vFechaCorte) en un LET cerca del inicio del canvas) puede reutilizarse en la condición WHERE de un RAW más adelante, en una expresión del Expression Builder de un TXF, o en la condición de un SWITCH, sin tener que redeclararla.

Parámetros vs. variables del canvas — los Parámetros del proyecto se definen una sola vez en Configuración y están pensados para valores que cambian entre entornos (ruta de biblioteca, fecha de corte); las variables LET/SET del canvas son parte de la lógica del pipeline mismo.
Variables disponibles en el Expression Builder
Variables en el Expression Builder
31

Propagación de Variables hacia Bucles

La variable de control de un Loop (el valor que cambia en cada iteración de un FOR EACH) se comporta exactamente como si hubiera sido declarada con LET/SET — queda disponible en cualquier picker de variables dentro del cuerpo del bucle, sin ninguna configuración adicional.

Esta propagación recorre toda la cadena de Loops anidados, del más interno al más externo: dentro de un Loop anidado dentro de otro Loop, están disponibles las variables de control de AMBOS niveles, además de cualquier LET/SET declarado en cualquiera de los dos cuerpos.

Los Parámetros del proyecto, en cambio, se leen siempre desde el proyecto raíz — un cuerpo de Loop no tiene su propia lista de Parámetros independiente; usa la del proyecto que lo contiene, sin importar cuántos niveles de anidación haya.

Por qué es así — en Qlik real, la variable de control de un FOR EACH es una variable normal mientras dura el bucle — exactamente el mismo comportamiento que modela Q-Expert aquí.
¿Cómo hacer…?

Las recetas de esta sección asumen que ya conoces el tipo de nodo correspondiente (ver los capítulos anteriores) y se enfocan en el flujo de trabajo paso a paso para lograr un resultado concreto.

32

Cómo hacer un JOIN

Unir dos tablas por una o más columnas en común, como un LEFT/INNER/OUTER JOIN de Qlik.

  • 1 · Identifica las columnas en comúnAbre el Panel de Propiedades de ambos nodos de entrada y confirma que comparten al menos una columna con el mismo nombre — si los nombres difieren, renómbralas primero (ver Manage Columns) o usa una KEY.
  • 2 · Arrastra un nodo JOINDesde la paleta de Operaciones, coloca un nodo JOIN en el canvas.
  • 3 · Conecta ambas entradasArrastra una conexión desde cada nodo de entrada hacia el puerto del JOIN. El primer nodo conectado se vuelve la tabla base; los siguientes se fusionan sobre ella.
  • 4 · Elige el tipo de combinaciónEn el Panel de Propiedades, elige LEFT, INNER o OUTER JOIN según qué filas quieres conservar cuando no hay coincidencia en la otra tabla.
  • 5 · Verifica el resultadoEl nodo que recibe la salida del JOIN muestra el conteo final de columnas — confirma que incluye las columnas esperadas de ambas tablas de origen.
33

Cómo hacer un CONCATENATE

Apilar dos tablas con la misma estructura (por ejemplo, ventas de distintos meses) en una sola.

  • 1 · Verifica que las columnas coincidanCONCATENATE funciona mejor cuando ambas tablas tienen exactamente los mismos nombres de columna — columnas que no coinciden quedan con NULL en las filas de la otra tabla.
  • 2 · Arrastra un nodo JOIN y elige CONCATENATEQ-Expert modela CONCATENATE como una variante del mismo nodo JOIN — selecciona CONCATENATE en lugar de LEFT/INNER/OUTER en el Panel de Propiedades.
  • 3 · Conecta ambas fuentesIgual que en un JOIN: arrastra una conexión desde cada nodo de entrada hacia el nodo CONCATENATE.
34

Cómo hacer un MAPPING

Cargar una tabla clave→valor y aplicarla con ApplyMap() en otra parte del canvas.

  • 1 · Crea el nodo MAPPINGArrastra un nodo MAPPING desde la paleta y apúntalo a un archivo de dos columnas (clave, valor) o a un INLINE con esa misma forma.
  • 2 · Dale un nombre reconocibleEl nombre del nodo MAPPING es el que usarás como primer argumento de ApplyMap() — elige algo descriptivo, como Map_EstadoPago.
  • 3 · Úsalo desde el Expression BuilderEn cualquier TXF aguas abajo, abre el Expression Builder y usa la categoría Mapping para insertar ApplyMap('Map_EstadoPago', CodEstadoPago) — no hace falta conectar el MAPPING con una línea al nodo que lo usa.
35

Cómo hacer un CROSSTABLE

Convertir una tabla ancha (una columna por mes) en una tabla alta (atributo/valor).

  • 1 · Identifica las columnas calificadorasSon las columnas que NO se pivotean — típicamente un identificador como ID_Presupuesto. Cuéntalas: ese número es el parámetro "calificadoras" del nodo.
  • 2 · Conecta la fuente ancha al CROSSTABLEArrastra la conexión desde el RAW o TXF que tiene las columnas anchas (Ene, Feb, Mar…) hacia el nodo CROSSTABLE.
  • 3 · Nombra las columnas resultantesDefine el nombre de la nueva columna de atributo (por ejemplo Mes) y el de la columna de valor (por ejemplo Monto) en el Panel de Propiedades.
36

Cómo hacer Ingeniería en Reversa

Convertir un script Qlik ya escrito en un canvas de nodos.

  • 1 · Abre Ingeniería en ReversaDesde el menú principal, abre la herramienta de Ingeniería en Reversa y pega o carga el archivo .qvs / .txt con el script existente.
  • 2 · Ejecuta el análisisQ-Expert recorre el script línea por línea, reconociendo patrones LOAD, JOIN, LET/SET, CALL, FOR EACH, entre otros, y crea el nodo correspondiente para cada uno.
  • 3 · Revisa el resumenEl resultado muestra cuántos nodos se crearon y cuántas líneas quedaron sin mapear como Raw Script — revísalas manualmente, ya que representan sintaxis que el analizador no reconoció.
  • 4 · Ajusta en el canvasEl canvas resultante es un punto de partida editable, no un resultado final — reorganiza, renombra y reemplaza los nodos Raw Script por nodos nativos donde tenga sentido.
37

Cómo usar el Expression Builder

Crear una columna calculada con sintaxis Qlik válida, asistido por autocompletado.

  • 1 · Ábrelo desde una columnaEn un nodo TXF, haz clic en el ícono Fx junto a la columna que quieres transformar, o en + Nueva columna calculada para crear una desde cero.
  • 2 · Construye la expresiónHaz clic en columnas y variables de la lista lateral para insertarlas; usa las categorías de función (Texto, Fecha/Hora, Numérico…) para insertar funciones con sus paréntesis listos.
  • 3 · Define el aliasEn el campo Column alias, escribe el nombre con el que la columna resultante quedará disponible para el resto del canvas.
  • 4 · Aplica y cierraHaz clic en Apply & Close — la transformación queda registrada en el nodo TXF, visible en su contador de transformaciones activas.
38

Cómo gestionar y renombrar columnas

Cambiar el nombre visible de una columna sin romper la lógica construida sobre ella.

  • 1 · Selecciona el nodoHaz clic en el nodo que contiene la columna — su lista de columnas aparece en el Panel de Propiedades.
  • 2 · Haz clic en el lápiz de renombrarJunto a cada columna hay un ícono de lápiz que abre el diálogo Rename Column, con el nombre original visible y un campo para el nuevo nombre.
  • 3 · Confirma con ApplyEl cambio se aplica de inmediato en el canvas. Cualquier expresión, clave o JOIN que ya referenciaba esa columna sigue funcionando — Q-Expert la rastrea por una referencia interna estable, no por el texto del nombre.
39

Cómo exportar e importar un proyecto

Mover un proyecto Q-Expert completo a otra máquina o compartirlo con otro Developer.

  • 1 · ExportarCon el proyecto abierto, usa Exportar (.qep) — se descarga un archivo con el nombre del proyecto y la fecha.
  • 2 · Compartir el archivoEnvía el .qep por el canal que prefieras — es un único archivo autocontenido con todo el canvas.
  • 3 · ImportarEn la máquina destino, usa Importar y selecciona el .qep — el proyecto se agrega a la lista, renombrándose automáticamente si ya existe un proyecto con ese nombre.
  • 4 · Revisa las rutas de bibliotecaSi Q-Expert avisa que alguna ruta lib:// no coincide localmente, reasígnala desde la Biblioteca antes de generar sintaxis — es la única parte del proyecto que depende de la máquina.
40

Cómo usar Variables en todo el Canvas

Definir una variable una sola vez y reutilizarla en cualquier parte del proyecto.

  • 1 · Decide dónde declararlaPara un valor que cambia entre entornos (ruta, fecha de corte), usa un Parámetro del proyecto en Configuración. Para lógica propia del pipeline, usa un nodo LET/SET en el canvas.
  • 2 · Colócala antes de donde la vas a usarUn nodo LET/SET debe preceder, en el flujo de conexiones, a cualquier nodo que la use — no es necesario que esté inmediatamente antes, basta con que aparezca más arriba en la cadena.
  • 3 · Úsala en cualquier pickerLa variable aparece automáticamente en la sección Variables del Expression Builder, del editor WHERE y del Fx Wizard de cualquier nodo aguas abajo — no hay que volver a declararla.
41

Cómo propagar conjuntos hacia Ciclos y manejar Variables ahí

Aprovechar la variable de control de un Loop como si fuera cualquier otra variable del canvas.

  • 1 · Entra al cuerpo del LoopHaz doble clic en el nodo LOOP para entrar a su canvas anidado.
  • 2 · Usa la variable de control directamenteLa variable que definiste como control del FOR EACH (por ejemplo vFile) ya está disponible en cualquier Expression Builder o editor WHERE dentro de ese cuerpo, sin declararla de nuevo.
  • 3 · Agrega variables propias del bucle con LET/SETCualquier variable adicional que declares con LET/SET dentro del cuerpo del Loop se suma a la misma lista — disponible para el resto de ese cuerpo, en cualquier nivel de anidación.
  • 4 · Recuerda los Parámetros del proyectoLos Parámetros definidos en Configuración se leen siempre desde el proyecto raíz — se ven exactamente igual dentro del Loop que fuera de él, sin ninguna acción adicional.
42

Configuración Global

Los ajustes del ícono ⚙️ en la topbar — aplican a todos los proyectos salvo que uno de ellos los sobreescriba en su propia Configuración de Proyecto.

General

Idioma de la interfaz y la lista de delimitadores INLINE que Ingeniería en Reversa reconoce al leer un LOAD...INLINE con formato explícito.

Prefixes

Prefijo por defecto de las tablas MAPPING e INLINE nuevas, el modo de clave para proyectos nuevos (Simple o Advanced) y los prefijos %SK_/%CK_ — cambiarlos aquí re-etiqueta las columnas de clave existentes en todos los proyectos.

Formats

Las variables SET que Qlik Sense inyecta por defecto (separadores, formatos de fecha/hora/timestamp, primer día de semana) y los nombres de mes/día (Inglés, Español o Custom) — se insertan en la pestaña _Main de cada exportación de sintaxis.

Style

Tema de color y colores por entidad del canvas; formato del script generado (columna de alineación AS, ancho de indentación, mayúsculas/minúsculas de keywords) y los colores de resaltado de sintaxis usados en toda la app.

Demos

Botón para iniciar el Tutorial Guiado y la lista de los 5 proyectos demo incluidos — nunca se eliminan y solo son accesibles desde este panel.

Por qué importa — estos valores son el punto de partida de cualquier proyecto nuevo. Un proyecto ya creado puede sobreescribir el modo de clave y los prefijos (Mapping/Inline/%SK_/%CK_) en su propia Configuración de Proyecto → Prefixes, sin afectar a los demás.
43

Configuración de Proyecto

Ajustes propios de cada proyecto, abiertos desde el ícono de edición junto a su nombre — nunca afectan a otro proyecto.

General

Nombre, autor y descripción del proyecto, más el modo de clave de este proyecto en particular — hereda el valor por defecto de Configuración Global al crearse, editable después.

Prefixes

Los mismos campos que Configuración Global → Prefixes (prefijos Mapping/Inline, %SK_/%CK_) pero sobreescritos solo para este proyecto — cambiarlos re-etiqueta las columnas de clave existentes únicamente en su canvas.

Source Paths

Dos grupos de variables lib://: las que apuntan a los archivos fuente de la Biblioteca, y las que definen dónde STORE escribe los QVDs transformados, dónde viven los .qvs de Include y las subcarpetas de cada librería del Catálogo de Rutinas. Pertenecen al Environment Profile activo (pestaña Deploy).

Deploy

Los Environment Profiles del proyecto (Desarrollo, Producción, etc.) — cada uno con su propio set de Source Paths y su propia carpeta física de exportación usada por el botón Deploy en Generar Sintaxis.

Script Header

El bloque de comentario que encabeza el script generado, con tags clicables ({{project}}, etc.) que se insertan en la posición del cursor.

Parámetros vs. Configuración Global — todo lo de este panel es específico de este proyecto; para un valor que debería empezar igual en todo proyecto nuevo, cambialo en Configuración Global en su lugar.