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

Identificar Emoticones en texto

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:










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í:
















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

23 de septiembre de 2015

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:




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:

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:











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:


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í:

 









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:

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



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 

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
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(Fechaas 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);
TablaFechas_tmp:
NoConcatenate LOAD Fecha
Resident TablaFechas Order By Fecha desc;

LET UltimaFecha=Peek('Fecha',0,'TablaFechas_tmp');


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
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í



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