Expresiones y Set Analysis en Qlik
Una 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.
- 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])
Mil gracias por la información!! he enviado el antiguo mensaje sin querer, quería agradecer el artículo.
Soy nueva en Qlikview y estoy sudando la gota gorda...
Gracias por la información, tengo una duda: ¿Cómo puedo hacer con Set Analisys que sume de Enero al Mes seleccionado -1 para que pueda realizer comparativos entre años con periodos completes y cerraods es decir, Si estoy en Abril necesito presenter las ventas acumuladas del 2015 de Enero a Marzo para comparer 2016 de enero a Marzo.
Graicas
Muy buena información, de verdad te lo agradezco, esto me sirvió mucho.
Saludos.
Yo tambien estoy sudando, pero no tanto.
Gracias por compartir.
Saludos
Que tal será posible sumar los años que estén seleccionados y de no seleccionar ninguno, sume las ventas del año corriente? es decir MAX(Año).
Saludos y gracias!
Un placer aprender de los mejores.. 🙂
Hola, quiero crear una lista, pero en mi base tengo Colombia y ecuador, solo quiero que aparezca ecuador, que comando debo utilizar.
Estimados,
las variables de vFechaInicio y vFechaFin cómo se arman?
tendrás algún ejemplo?
Como puedo hacer que me sume todos los valores de un excel cuya fecha esta en blanco.... he intentado con comillas simple y dobles y no me funciona....
Hola, por favor, podrias poner un ejemplo con imagenes. Muchas gracias por anticipado.
Fenomenal artículo.Me ha sido muy útil.
Muchas gracias por compartir.
Un saludo.
Idolo. Me sirvio . gracias
Hola!,
tengo una duda con Set Analysis y me lleva loco, ojalá podáis ayudarme!!
Tengo una tabla como la siguiente:
Pais / Modelo / 2017 / 2018
España V1 100 200
España V2 50 40
España V3 25 25
Tengo filtros de pais modelo y año y estoy intentando mediante Set analysis crear una fórmula con filtro dinámico en un KPI para saber la cantidad de unidades en un año (2017 o 2018) cuando selecciono en los filtros un país y un modelo. En la tabla he puesto españa pero hay muchos más países con los mismos modelos.
He estado intentando con sum({$}[2017]).
??Mi problema es que no quiero fijar Modelo en la fórmula, lo que quiero es que cada vez que en el filtro elija un modelo la fórmula lo tome, como ejemplo pongamos que elijo VN1 y españa y el KPI me muestra inmediatamente 100.
Es posible?
Un saludo y muchas gracias
Fernando
L fórmula que uso la he escrito mal....es esta
sum ({$[2017])
gracias de nuevo
no ha manera, no puedo poner corchetes ni flechas...:(
Buenos días,
Necesito montar un indicador para saber los clientes nuevos que se han creado este año y los que hemos perdido. Me gustaría encontrar una fórmula para lo siguiente:
Si la facturación del año actual es mayor a 0 y el año anterior es 0, seria cliente nuevo, si la facturación de este año es 0 y la del año anterior mayor a 0 seria cliente perdido.
¿Me podríais ayudar?
Gracias,
Un saludo,
Hola que tal, gracias por el aporte, tendrás mas ejemplos ?
Te comento que estoy tratando de crear interavalos de tiempo es decir, los meses que necesito evaluar inician el 16 del mes anterior y terminan el 15 del mes actual, tendrás un ejemplos de como resolverlo ?
use el fragmento que has colocado:
Sum({=$(=Date(vFechaInicio))} [Importe Venta])
Trate de construir la fecha con makedate pero ha funcionado
Y PARA METER UN CAMPO QUE LA INFORMACIÓN ES EN BLANCO O CON UNA RALLA -