Tres archivos, una tabla
Manual paso a paso
Las capturas muestran Q-Expert en inglés; la interfaz en español llegará pronto.
01La pregunta de negocio
Q-Expert Distributors recibe sus ventas en un archivo por mes: Sales_2025_01.csv, Sales_2025_02.csv y Sales_2025_03.csv. El equipo quiere todos en una sola tabla, y que el archivo del próximo mes cargue sin que nadie toque el script.
02Antes de empezar
- Descomprime el paquete del episodio. Necesitas
data/Sales_2025_01.csv…Sales_2025_03.csvy, para el último paso,data/Raw/Sales_2025_01.qvd…_03.qvd. - El episodio 1 empieza con un proyecto vacío, así que no hay
start.qepque importar. Desde el episodio 2, cada paquete trae el proyecto tal como lo dejó el episodio anterior. - En Qlik, crea una conexión de datos de carpeta llamada QXDistributors que apunte a la carpeta
dataque descomprimiste. El script lee todos los archivos a través de ella. Dentro de esa carpetadata, crea también la carpetaTransform/_QVS: ahí van los archivos de script de Q-Expert (ver Revisa tu resultado). - ¿Quieres ver los archivos por dentro antes de empezar? Q-Explorator, la herramienta de escritorio del equipo de Q-Fábrica, abre archivos CSV, Excel, Parquet y QVD para que veas su contenido y su calidad antes de modelar.
03Paso a paso
-
1
Crea el proyecto
Haz clic en New Project en la barra superior. Llámalo
Q-Expert Distributorsy haz clic en Create Project. Todo modelo empieza en un canvas limpio.
Figura 1.1 — Crea el proyecto -
2
Di dónde viven los archivos
Abre Project Settings → Source Paths. Agrega un mapeo con el nombre de variable
vPathRawy la carpetaQXDistributors, de modo que la fila digavPathRaw = lib://QXDistributors/. En la misma pestaña, ponvTxfPathenlib://QXDistributors/Transform/: ahí viven los QVD de trabajo y los archivos de script que Q-Expert separa, bajo la misma conexión.
Figura 1.2 — Di dónde viven los archivos -
3
Define los formatos numéricos del proyecto
Estos archivos usan punto para los decimales y coma para los miles. Haz clic en $(x) en la barra superior y, en la pestaña Predefined, define:
- ThousandSep
, - DecimalSep
. - MoneyThousandSep
, - MoneyDecimalSep
. - MoneyFormat
$ #,##0.00;-$ #,##0.00

Figura 1.3 — Define los formatos numéricos del proyecto - ThousandSep
-
4
Agrega las variables de proyecto
Pasa a la pestaña Project y agrega, cada una con el botón +:
vEnvironment=PRODvBaseCurrency=COP(la usa el episodio 4)
Luego haz clic en Save.

Figura 1.4 — Agrega las variables de proyecto -
5
Agrega los tres archivos de ventas
En la Library, haz clic en Add Files y elige los tres archivos
Sales_2025_0N.csv. Q-Expert ve las mismas columnas en todos y los agrupa bajo un solo patrón,Sales_*.csv.
Figura 1.5 — Agrega los tres archivos de ventas -
6
Arrastra el grupo al canvas
Arrastra el encabezado del grupo
Sales_*.csval canvas. Un solo nodo RAW lee todos los meses: los tres archivos de hoy y los que vienen.
Figura 1.6 — Arrastra el grupo al canvas -
7
Nómbrala como tabla de trabajo
Selecciona el nodo. En la pestaña Config, escribe
tmp_SalesRawcomo nombre de la tabla y presiona Tab.
Figura 1.7 — Nómbrala como tabla de trabajo -
8
Explica el porqué en un comentario
En la pestaña Info, escribe en Comments:
Sales arrive as one file per month; the wildcard reads every month, including next month's file.Va al script justo encima del LOAD.
Figura 1.8 — Explica el porqué en un comentario -
9
Genera el script
Haz clic en Generate Syntax y abre la pestaña
Flow_1. Un solo LOAD con un asterisco en la ruta, leído a través de la variable:FROM [$(vPathRaw)Sales_*.csv]. El archivo del próximo mes simplemente funciona.
Figura 1.9 — Genera el script -
10
La misma idea con archivos QVD
Agrega los tres archivos de
data/Raw/. Son QVD, así que la Library crea un segundo grupo,Sales_*.qvd, junto aSales_*.csv. Arrastrado al canvas, los lee con(qvd). El curso sigue con los archivos CSV, así que deja este grupo en la Library.
Figura 1.10 — La misma idea con archivos QVD
04Revisa tu resultado
- El canvas tiene un nodo RAW,
tmp_SalesRaw, con 11 de 11 columnas: SaleID, SaleDate, CustomerID, ProductID, SalespersonID, BranchID, Quantity, UnitPrice, DiscountPct, Currency y Channel. - Ejecuta el script en Qlik:
tmp_SalesRawtiene 330 filas, 110 de cada mes. - Q-Expert divide el script en dos:
_Main, la única parte que pegas en Qlik, yFlow_1.qvs, un archivo que_Mainlee conMUST_INCLUDE. Ambos deben coincidir con los de abajo, salvo la fecha del encabezado y una línea// Q-Expert · Ref …con tu propia referencia.
_Main
Se pega en QlikEste es el único script que pegas en Qlik Sense: abre el Editor de carga de datos de la app, reemplaza su contenido por este y recarga. Cada línea $(MUST_INCLUDE=…) lee en su lugar uno de los archivos de abajo, así el resto del modelo nunca entra al editor.
Ver script · 42 líneas
/*---------------------------------------------------------------------------------------- Description [MAIN]: ------------------------------------------------------------------------------------- Author: The Q-Fábrica team - Date: [2026-11-02] ------------------------------------------------------------------------------------- Changes ------------------------------------------------------------------------------------- Author Date Detail ------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------- Copyright © Q-Expert Distributors. Q-Expert Qlik Developer Framework. www.qfabrica.com ----------------------------------------------------------------------------------------*/ SET ThousandSep=','; SET DecimalSep='.'; SET MoneyThousandSep=','; SET MoneyDecimalSep='.'; SET MoneyFormat='$ #,##0.00;-$ #,##0.00'; SET TimeFormat='hh:mm:ss'; SET DateFormat='YYYY-MM-DD'; SET TimestampFormat='YYYY-MM-DD hh:mm:ss'; SET MonthNames='Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec'; SET LongMonthNames='January;February;March;April;May;June;July;August;September;October;November;December'; SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun'; SET LongDayNames='Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;Sunday'; SET FirstWeekDay=0; SET BrokenWeeks=1; SET ReferenceDay=4; SET FirstMonthOfYear=1; LET vExecutionDate = Timestamp(Now(), 'YYYY-MM-DD hh:mm:ss'); SET vTxfPath = 'lib://QXDistributors/Transform/'; SET vPathRaw = 'lib://QXDistributors/'; SET vEnvironment = 'PROD'; // PROD, QA or DEV SET vBaseCurrency = 'COP'; // Currency every amount is converted to $(MUST_INCLUDE=$(vTxfPath)_QVS/Flow_1.qvs);
Flow_1.qvs
Archivo · lo lee MUST_INCLUDENo se pega: se guarda como archivo. En la pestaña Flow_1 de Generate Syntax, Export descarga Flow_1.qvs (Deploy escribe todas las pestañas en una carpeta de una vez). Ponlo en lib://QXDistributors/Transform/_QVS/Flow_1.qvs, la carpeta Transform/_QVS dentro de tu carpeta QXDistributors. Si el archivo no está, la recarga se detiene con un error: para eso existe MUST_INCLUDE.
Ver script · 33 líneas
/*---------------------------------------------------------------------------------------- Description [Flow_1]: ------------------------------------------------------------------------------------- Author: The Q-Fábrica team - Date: [2026-11-02] ------------------------------------------------------------------------------------- Changes ------------------------------------------------------------------------------------- Author Date Detail ------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------- Copyright © Q-Expert Distributors. Q-Expert Qlik Developer Framework. www.qfabrica.com ----------------------------------------------------------------------------------------*/ // ------------------------------------------------------------------------------------------------- // Sales arrive as one file per month; the wildcard reads every month, including next month's file. [tmp_SalesRaw]: LOAD SaleID, SaleDate, CustomerID, ProductID, SalespersonID, BranchID, Quantity, UnitPrice, DiscountPct, Currency, Channel FROM [$(vPathRaw)Sales_*.csv] (txt, delimiter is ',', embedded labels);
05Por qué se hace así
tmp_dice que es una tabla de trabajo.tmp_SalesRawes un paso haciaFact_Sales, no parte del modelo final. Toda tablatmp_se elimina antes de que termine el script (episodio 6).- ¿Comodín o loop? El comodín basta cuando todos los archivos tienen la misma estructura y no hay que hacer nada por archivo. El episodio 2 necesita saber de qué mes viene cada fila, y eso pide un loop.
- Rutas y formatos en variables. El script nunca fija una carpeta ni depende de la configuración regional del servidor Qlik que lo ejecuta. Por eso pasa de desarrollo a producción sin cambios.
- Nombres de campo en PascalCase, en inglés y sin espacios. Más adelante solo las llaves compartirán nombre entre tablas; cualquier otro nombre repetido crearía una llave sintética.
06Lo que sigue
Episodio 2: los mismos archivos, pero necesitamos saber de qué mes viene cada fila.
Antes de modelar
Q-Explorator es la herramienta de escritorio del equipo de Q-Fábrica para explorar archivos QVD, CSV, Excel y Parquet, y para convertir archivos CSV, TXT y Excel en QVD. Abre en ella los archivos de cada episodio para ver primero su contenido y su calidad.
Conoce Q-Explorator