Expresiones y Set Analysis en Qlik

set_analysisUna de las potencias más importantes de Qlik es el cálculo de la información por medio de las expresiones y utilizando el Set Analysis.

A continuación os resumo un conjunto de las expresiones más habituales y Set Analysis para Qlik que iré completando poco a poco.

Como introducción, el Set Analysis o análisis de conjuntos calcula valores en el conjunto de datos para usarlos en los objetos de QlikView/QlikSense. Por ejemplo, en un gráfico podemos mostrar las ventas de un determinado artículo para todos los países independientemente de la selección actual.

Set Analysis nos permite embeber filtros/selecciones en las expresiones de manera particular; funcionan igual que las selecciones en la interfaz de usuario, pero son predefinidas por el desarrollador teniendo en cuenta que:

  • Las expresiones de Set Anaysis no se pueden utilizar en el script de Qlik, solo se pueden utilizar en expresiones de gráficos. Destacar que siempre van entre {}.
  • ›Restringen, predefinen o extienden el conjunto de datos en que los gráficos basan sus cálculos.
  • El conjunto de registros modificado en una expresión set afecta solo a la expresión en que se está usando, no al documento completo.
 Hay dos identificadores de conjuntos importes que hay que tener en cuenta a la hora de realizar las expresiones con Set Analysis:
  • 1 Operador número uno que representa el conjunto total de registros o valores de campo en la aplicación
  • $ Operador signo dólar que representa los valores de campo o registros incluidos en la selección actual
  • {1-$} Combinación de operadores que representa la inversa de la selección actual, es decir, todos los valores excluidos en la selección actual

 Ejemplos básicos

Suma las ventas para la selección actual, lo mismo que Sum([Importe venta]).

Sum({$} [Importe Venta])

Suma las ventas (el total) sin tener en cuenta las selecciones actuales.

Sum({1} [Importe Venta])

Suma las ventas sin tener en cuenta las selecciones de año y trimestre.

Sum({< Año = , Trimestre = >} [Importe Venta])

Suma las ventas donde el año coincida con la cadena de búsqueda 20*, es decir, todos los años que comiencen por 20 serán tomados en cuenta.

Sum({<Año= {'20*'}>} [Importe Venta])

Suma las ventas del año seleccionado. Si no hay año seleccionado o hay varios años seleccionados, suma las ventas del mayor año.

Sum({<Año={$(=Max(Año))}>} [Importe Venta])

Suma las ventas del año anterior al seleccionado. Si no hay año seleccionado o hay varios años seleccionados, suma las ventas del año anterior al mayor.

Sum({<Año={$(=Max(Año)-1)}>} [Importe Venta])

Suma las ventas del año seleccionado (es necesario seleccionarse un único año)

Sum({<Año={$(=Only(Año))}>} [Importe Venta])

Suma las ventas entre dos fechas seleccionadas (utilizamos dos variables, vFechaInicio y vFechaFin y utilizando dos objetos Calendario/Deslizador)

Sum({<FechaDocumento = {'>=$(=Date(vFechaInicio))<=$(=Date(vFechaFin))'} >} [Importe Venta])

Suma las ventas de todos los clientes cuyo código sea inferior o igual a 100000

Sum({<[No. Cliente] = {"<=100000"}>} [Importe Venta])

Cuenta el número de facturas realizadas.

Count(Distinct [No. Factura])

Muestra el porcentaje de ventas con respecto al total de las ventas. Hay que marcar "Relativo" en la pestaña Expresiones y en Número marcar la opción de "Mostrar en porcentaje (%)"

Sum([Importe Venta]) / Sum(TOTAL [Importe Venta])

Cuenta clientes cuyo [Tipo Cliente] es Mayorista, ignorando la selección en [Tipo Cliente].

Count({<[Tipo Cliente] = {'Mayorista'}>} Cliente)

Cuenta clientes cuyo [Tipo Cliente] es Mayorista y el País es España, ignorando la selección en [Tipo Cliente] y País.

Count({<[Tipo Cliente] = {'Mayorista'}, País = {'España'}>} Cliente)

Ejemplos con operadores de asignación

  • ›= Redefine la selección para cierto campo
  • += Define implícitamente una unión entre los valores de campo seleccionados y los que se especifiquen en la lista de elementos.
  • -= Define implícitamente una exclusión de los valores que especifiquemos de aquellos valores que el usuario ha seleccionado.
  • *= Se usa para definir los valores de campo correspondientes en base a la intersección entre lo que el usuario ha seleccionado y los valores que se especifiquen en la lista de elementos.
  • /= Se usa para definir una diferencia simétrica (XOR), y el conjunto de registros resultante contendrá los valores que están presentes en uno de los dos conjuntos (las selecciones del usuario o la lista de valores especificados de manera explícita) pero no en ambos.

Suma las ventas que el usuario haya seleccionado y también de los años 2013 y 2014 estén o no seleccionados.

Sum({<Año += {2013, 2014}>} [Importe Venta])

Suma las ventas de los años que el usuario haya seleccionado pero excluirá las ventas del año 2013 esté o no seleccionado.

Sum({<Año -= {'2013'}>} [Importe Venta])