El siguiente script crea un campo flag que identifica si un texto tiene emoticones. Esta técnica fue publicada originalmente por Stefan Wühl y subida aqui
El resultado seria este:
Mostrando entradas con la etiqueta Script. Mostrar todas las entradas
Mostrando entradas con la etiqueta Script. Mostrar todas las entradas
2 de abril de 2018
6 de julio de 2017
Transponer tabla sin Generic Load
En la nota publicada AQUI hay un ejemplo de transponer una tabla usando generic load, pero si hay muchos campos a generar, quizas no sea la mejor tecnica.
El siguiente script transforma filas a columnas usando iteraciones y condiciones, que seria mas conveniente con gran volumen de filas a transformar en columnas
Conceptualmente queda así:
El siguiente script transforma filas a columnas usando iteraciones y condiciones, que seria mas conveniente con gran volumen de filas a transformar en columnas
Conceptualmente queda así:
1 de mayo de 2017
Acumulados por dias
El siguiente script calcula los pagos acumulados que tiene un cliente al momento de realizar una transacción. Los campos calculados son a 1, 7, 15 y 30 días.
Conceptualmente la tabla quedaría así:
El qvd de ejemplo se puede descargar AQUI
Conceptualmente la tabla quedaría así:
El qvd de ejemplo se puede descargar AQUI
23 de septiembre de 2015
Join para Estado anterior y posterior
Si se quiere traer el estado un mes antes y un mes despues de un cliente en un periodo especifico, teniendo algo como:
8 de marzo de 2015
Mostrar avance de script con TRACE
Si se tiene un scirpt con iteraciones, y se quiere saber el avance, teniendo algo como:
Para lograrlo puede usarse esto:
Para lograrlo puede usarse esto:
26 de octubre de 2014
Renombrar campos usando tabla
Si una tabla tiene nombres de capos genéricos y los nombres verdaderos están en otra tabla, pude usarse RENAME Fields para renombrar los campos, quedando algo como:
Para lograr esto puede usarse el siguiente script:
Para lograr esto puede usarse el siguiente script:
11 de octubre de 2014
Flags para idenficar Fechas
Si se tienen Ventas por cliente y se quiere identificar:
1. Ultimo Consumo de cada Cliente
2. Primer Consumo de cada Cliente
3. Si el Cliente consume en ultimo día del mes
4. Si el Cliente consume en primer día de la semana
5. Si el Cliente consume en ultimo día de semana
Una técnica podría ser crear campos tipo Flag, quedando como resultado:
1. Ultimo Consumo de cada Cliente
2. Primer Consumo de cada Cliente
3. Si el Cliente consume en ultimo día del mes
4. Si el Cliente consume en primer día de la semana
5. Si el Cliente consume en ultimo día de semana
Una técnica podría ser crear campos tipo Flag, quedando como resultado:
Para lograr esto el scrip seria:
22 de junio de 2014
Cargar Variables desde Excel
El siguiente script carga las variables desde un excel (variables.xlsx) que tiene:

Referencia: http://community.qlik.com/thread/27883

TablaVariables:
LOAD Variable, Valor
FROM variables.xlsx
(ooxml, embedded labels, table is Hoja1);
let CantVariables=NoOfRows('TablaVariables');
for i=0 to (CantVariables-1)
let vVariable=Peek('Variable',i,'TablaVariables');
let $(vVariable)=Peek('Valor',i,'TablaVariables');
NEXT
El Panel de Variables quedaría así:
LOAD Variable, Valor
FROM variables.xlsx
(ooxml, embedded labels, table is Hoja1);
let CantVariables=NoOfRows('TablaVariables');
for i=0 to (CantVariables-1)
let vVariable=Peek('Variable',i,'TablaVariables');
let $(vVariable)=Peek('Valor',i,'TablaVariables');
NEXT
El Panel de Variables quedaría así:
Referencia: http://community.qlik.com/thread/27883
17 de junio de 2014
Transponer tabla con Generic Load
Nota: Para mismo resultado sin usar la function Generic LOAD, ver ejemplo publicado AQUI
Si se quiere transponer una tabla de la forma:
una técnica seria el script:
Si se quiere transponer una tabla de la forma:
una técnica seria el script:
Ventas:
LOAD * INLINE [
Sucursal, Año, Venta
Oeste, 2012, 594
Oeste, 2013, 756
Oeste, 2011, 377
Este, 2013, 602
Este, 2012, 179
Este, 2011, 404
Sur, 2013, 601
Sur, 2012, 811
Sur, 2011, 807
Norte, 2013, 500
Norte, 2012, 647
Norte, 2011, 108];
VentaSucursales: Load distinct Sucursal Resident Ventas;
TablaGenerica: Generic LOAD Sucursal, 'Venta_'&Año, Venta Resident Ventas;
FOR i = NoOfTables()-1 to 0 STEP -1
LET vTable=TableName($(i));
IF WildMatch('$(vTable)', 'TablaGenerica.*') THEN
LEFT JOIN (VentaSucursales) LOAD * RESIDENT [$(vTable)];
DROP TABLE [$(vTable)];
ENDIF
NEXT
DROP Table Ventas;
Referencia:
http://community.qlik.com/blogs/qlikviewdesignblog/2014/03/31/generic
LOAD * INLINE [
Sucursal, Año, Venta
Oeste, 2012, 594
Oeste, 2013, 756
Oeste, 2011, 377
Este, 2013, 602
Este, 2012, 179
Este, 2011, 404
Sur, 2013, 601
Sur, 2012, 811
Sur, 2011, 807
Norte, 2013, 500
Norte, 2012, 647
Norte, 2011, 108];
VentaSucursales: Load distinct Sucursal Resident Ventas;
TablaGenerica: Generic LOAD Sucursal, 'Venta_'&Año, Venta Resident Ventas;
FOR i = NoOfTables()-1 to 0 STEP -1
LET vTable=TableName($(i));
IF WildMatch('$(vTable)', 'TablaGenerica.*') THEN
LEFT JOIN (VentaSucursales) LOAD * RESIDENT [$(vTable)];
DROP TABLE [$(vTable)];
ENDIF
NEXT
DROP Table Ventas;
Referencia:
http://community.qlik.com/blogs/qlikviewdesignblog/2014/03/31/generic
4 de mayo de 2014
Split de un QVD
Las siguientes tecnicas dividen un qvd de gran volumen en distintos qvd, manteniendo la carga QVD Optimized.
1. Divide la tabla VentasEnero.qvd en qvd distintos, uno por cada dia, manteniendo QVD Optimized. El resultado seria los qvd: Ventas_20140101.qvd, Ventas_20140102.qvd, Ventas_20140103.qvd, etc.
Fechas:
LOAD Distinct Fecha VentasEnero.qvd;
FOR i=1 to NoOfRows('Fechas')-1
LET vFecha=Date(FieldValue('Fecha',$(i)),'YYYYMMDD') ;
Ventas:
LOAD Fecha, Sucursal, Ventas
FROM VentasEnero.qvd (qvd) Where Exists (Fecha);
Store Ventas into Ventas_$(vFecha).qvd;
DROP Table Ventas,Temporal;
NEXT
1. Divide la tabla VentasEnero.qvd en qvd distintos, uno por cada dia, manteniendo QVD Optimized. El resultado seria los qvd: Ventas_20140101.qvd, Ventas_20140102.qvd, Ventas_20140103.qvd, etc.
Fechas:
LOAD Distinct Fecha VentasEnero.qvd;
FOR i=1 to NoOfRows('Fechas')-1
LET vFecha=Date(FieldValue('Fecha',$(i)),'YYYYMMDD') ;
Ventas:
LOAD Fecha, Sucursal, Ventas
FROM VentasEnero.qvd (qvd) Where Exists (Fecha);
Store Ventas into Ventas_$(vFecha).qvd;
DROP Table Ventas,Temporal;
NEXT
19 de febrero de 2014
Maxima Fecha para Carga Incremental
Diferentes técnicas para obtener la máxima fecha de un qvd y asignarla a una variable para luego usar esta variable en una Carga Incremental.
1. Asignar la fecha de la última actualización del qvd a la variable UltimaFecha
2. Crear tabla de un registro con la fecha máxima, leyendo todos los registros del campo Fecha de un qvd.
TablaFechas_tmp:
LOAD Max(Fecha) as Fecha
From Data.qvd (qvd);
LET UltimaFecha=Peek('Fecha',0,'TablaFechas_tmp');
3. Cargar todos los registros del campo Fecha de un qvd y después ordena las fechas de mayor a menor en una tabla nueva nombrándola TablaFechas_tmp. Luego asigna la primera fecha de la TablaFechas_tmp a la variable UltimaFecha.
LET UltimaFecha=Peek('Fecha',0,'TablaFechas_tmp');
4. ..
Referencias:
1. http://www.learnqlickview.com/qlikview-tutorial-a-how-to-tip-on-data-load/
2. http://qlikviewnotes.blogspot.com.ar/2013/09/fastest-methd-to-read-maxfield-from-qvd.html
3. http://qlikviewnotes.blogspot.com.ar/2013/08/super-fast-method-to-retrieve-qvd-high.html
4. http://www.qlikcommunity.com/thread/35463
5. http://qlikviewmaven.blogspot.com.ar/2009/06/quick-load-of-max-field-value.html
1. Asignar la fecha de la última actualización del qvd a la variable UltimaFecha
LET UltimaFecha=QvdCreateTime('C:\Datos.qvd');
2. Crear tabla de un registro con la fecha máxima, leyendo todos los registros del campo Fecha de un qvd.
TablaFechas_tmp:
LOAD Max(Fecha) as Fecha
From Data.qvd (qvd);
LET UltimaFecha=Peek('Fecha',0,'TablaFechas_tmp');
3. Cargar todos los registros del campo Fecha de un qvd y después ordena las fechas de mayor a menor en una tabla nueva nombrándola TablaFechas_tmp. Luego asigna la primera fecha de la TablaFechas_tmp a la variable UltimaFecha.
TablaFechas:
LOAD Fecha
FROM Data.qvd (qvd);
LOAD Fecha
FROM Data.qvd (qvd);
TablaFechas_tmp:
NoConcatenate LOAD Fecha
NoConcatenate LOAD Fecha
Resident TablaFechas Order By Fecha desc;
4. ..
// Carga el campo Fecha del qvd
Temporal_1:
LOAD Fecha
FROM Fact_Ventas.qvd (qvd);
// Load Precedente que carga la tabla creada
// inmediatamente después
Temporal_2:
NoConcatenate
LOAD MaxString(Fecha) as UltimaFecha;
// Crea tabla de un registro con la Fecha Máxima,
// leyendo los campos Fecha cargados previamente
LOAD fieldvalue('Fecha',iterno()) as Fecha AUTOGENERATE 1
WHILE not IsNull(fieldvalue('Fecha',iterno()));
// Asigna a la variable vUltimaFecha el valor
// del campo UltimaFecha de la tabla Temporal_2
let vUltimaFecha = FieldValue('UltimaFecha',1);
//Borra tablas
DROP Table Temporal_1, Temporal_2;
Temporal_1:
LOAD Fecha
FROM Fact_Ventas.qvd (qvd);
// Load Precedente que carga la tabla creada
// inmediatamente después
Temporal_2:
NoConcatenate
LOAD MaxString(Fecha) as UltimaFecha;
// Crea tabla de un registro con la Fecha Máxima,
// leyendo los campos Fecha cargados previamente
LOAD fieldvalue('Fecha',iterno()) as Fecha AUTOGENERATE 1
WHILE not IsNull(fieldvalue('Fecha',iterno()));
// Asigna a la variable vUltimaFecha el valor
// del campo UltimaFecha de la tabla Temporal_2
let vUltimaFecha = FieldValue('UltimaFecha',1);
//Borra tablas
DROP Table Temporal_1, Temporal_2;
Referencias:
1. http://www.learnqlickview.com/qlikview-tutorial-a-how-to-tip-on-data-load/
2. http://qlikviewnotes.blogspot.com.ar/2013/09/fastest-methd-to-read-maxfield-from-qvd.html
3. http://qlikviewnotes.blogspot.com.ar/2013/08/super-fast-method-to-retrieve-qvd-high.html
4. http://www.qlikcommunity.com/thread/35463
5. http://qlikviewmaven.blogspot.com.ar/2009/06/quick-load-of-max-field-value.html
6 de febrero de 2014
Crear Campo Acumulado
El siguiente script crea el campo VentaAcumulada diariamente en cada Sucursal
Ventas_tmp:
LOAD * INLINE [
Sucursal, Fecha, Venta
Sur, 01/04/2012, 45
Norte, 01/01/2012, 30
Sur, 01/08/2012, 70
Norte, 01/05/2012, 22
Norte, 01/07/2012, 43
Sur, 01/09/2012, 50
Norte, 01/03/2012, 65
Sur, 01/06/2012, 90
Sur, 01/02/2012, 24] ;
Ventas:
LOAD *,
If(Sucursal=Previous(Sucursal),PEEK(VentaAcumulada)+Venta,Venta) AS VentaAcumulada
Resident Ventas_tmp Order By Sucursal,Fecha;
DROP Table Ventas_tmp;
La tabla Ventas quedaría así:
NOTA: La función PEEK no reconoce valores nulos, por lo cual el campo Venta no debe contener Null, estos deben transformarse a cero previamente. Para transformar valores nulos, ver nota publicada aquí
LOAD * INLINE [
Sucursal, Fecha, Venta
Sur, 01/04/2012, 45
Norte, 01/01/2012, 30
Sur, 01/08/2012, 70
Norte, 01/05/2012, 22
Norte, 01/07/2012, 43
Sur, 01/09/2012, 50
Norte, 01/03/2012, 65
Sur, 01/06/2012, 90
Sur, 01/02/2012, 24] ;
Ventas:
LOAD *,
If(Sucursal=Previous(Sucursal),PEEK(VentaAcumulada)+Venta,Venta) AS VentaAcumulada
Resident Ventas_tmp Order By Sucursal,Fecha;
DROP Table Ventas_tmp;
La tabla Ventas quedaría así:
NOTA: La función PEEK no reconoce valores nulos, por lo cual el campo Venta no debe contener Null, estos deben transformarse a cero previamente. Para transformar valores nulos, ver nota publicada aquí
28 de diciembre de 2013
Etiquetas del Visor de Tablas
Cuando vamos al visor de tabla (Ctrl+T) y posicionamos el puntero en algún campo, se presenta una etiqueta describiendo características del campo especificado.
La siguiente imagen muestra algunas definiciones de la etiqueta
Descripción de Ratio de Subconjunto en Visor de Tablas
23 de diciembre de 2013
Eliminar Ceros a la Izquierda
Qlikview considera hasta 14 dígitos para números, por lo cual una forma de eliminar ceros a la izquierda seria la siguiente:
Right(CentaContable,14)*1 as CuentaContable
Si el campo es alfanumérico, con registros de tipo CTA000100, y queremos obtener '100' como resultado, esta podría ser una técnica:
Right( KeepChar(CuentaContable,’0123456789′),14)*1 as CuentaContable
Otras transformaciones:
Para transformación de fechas, ver nota publicada aquí
Para transformar campos en escala normalizada, ver notas publicada aqui
Para transformar campos en escala normalizada especifica, ver notas publicada aqui
Suscribirse a:
Entradas (Atom)













