Fala pessoal, tudo beleza?
Post de continuação do Projeto Nprinting. Para quem não leu o primeiro, veja aqui para entender!
Link aqui da comunidade: Um projeto Nprinting - Parte 01
Neste post irei falar mais sobre os filtros, bora lá?
IMPORTANTE: Conforme solicitação de alguns leitores, abordarei em um próximo post os temas: "Criar Relatório", "Criar Destino" e "Criar Task de Publicação".
No capítulo anterior
No post anterior, conseguimos gerar a planilha com usuários únicos, por e-mail, e seus respectivos grupos, conforme lista abaixo:
O caso que nos preocupa é o "YURI NICOLETT", que receberá relatórios para o nível de vendedor e supervisor. Sei que posso tratar isso nos filtros, porém existe uma maneira de criar vários filtros, para o mesmo usuário, e identificar o filtro que será utilizado em cada relatório? Sim
Filtros
Tudo o que você precisa saber sobre filtros esta aqui!
Existem vários tipos de filtros:
- Filtros de Tarefas
- Filtros de Relatórios
- Filtros de Objetos
- Filtros de Usuários
Os filtros são avaliados na seguinte sequência: tarefa, usuário, relatório e objeto.
Em nosso exemplo, o tipo de filtro que trataremos será o de usuário. Para o cadastro de um filtro, serão solicitadas algumas informações (maiores informações no help da qlik😞
- Nome: nome do filtro.
- Descrição: descrição (opcional).
- Aplicativo: nome do aplicativo associado ao filtro. O aplicativo deve existir no servidor.
- Habilitado: defina como verdadeiro, caso deseje criar um filtro habilitado. Defina como falso para criar um filtro desabilitado que será ignorado durante a geração do relatório.
- Conexão: nome da conexão. Ao especificar isso, você pode criar filtros diferentes com base em campos com os mesmos nomes de conexões diferentes no mesmo aplicativo. A conexão deve existir no servidor.
- Valores: use essa coluna para filtrar os valores de string. Liste-os no formato [nome do campo]={value1,value2,...}. Para adicionar valores para mais de um campo, separe-os com uma vírgula. Por exemplo: [País]={Italy,Germany,Spain}, [CategoryName]={Babywear, Men´s Wear, Women's Wear}. Não insira espaços em branco antes e depois do símbolo de igual (=).
- Valores Numéricos: use essa coluna para filtrar os valores numéricos. Liste-os no formato [nome do campo]={value1,value2,...}. Por exemplo, CategoryID={1.0,"5",8.2}. Não insira espaços em branco antes e depois do símbolo de igual (=).
- Fórmulas: use essa coluna para calcular valores para filtrar por meio do uso de fórmulas do QlikView. Liste-os no formato [nome do campo]={formula1,formula2,...}. Por exemplo, Ano={Year(now()), Year(now())-1,Year(now())-2}. Não insira espaços em branco antes e depois do símbolo de igual (=). Se um valor ou uma fórmula incluir vírgulas, use aspas duplas como delimitadores. Exemplo: [SalemanName]={"Jeremy Martinson, Jr.", Tom Lindwall} em vez de [SalemanName]={Jeremy Martinson, Jr., Tom Lindwall}
Lembram que no cadastro do usuário, também existe uma coluna de filtro? Não lembra? Veja a planilha que geramos no post anterior:
Com a coluna "Filters", poderei cadastrar "N" filtros para cada um dos usuários.
Lembre-se: A nomenclatura utilizada no cadastro do usuário deverá ser a mesma no cadastro do filtro.
Sintaxe de filtros
A sintaxe para criar filtros no NPrinting é simples, mas não custa reforçar! Todos os detalhes podem ser conferidos aqui
Sintaxe: [Nome do Campo]={Valor1, Valor2, Valor3}
- Não inserir espaço em branco antes ou depois do =
- Se o nome campo possui espaços, use colchetes []. Exemplo: [Código do Vendedor]={1}
- Mais de um valor deve ser separado por virgula. Exemplo: [Código do Vendedor]={1,2,3,4}
- Cada tipo de filtro deve respeitar a sua respectiva coluna:
- Texto - Value
- Númeri - Numeric Value
- Expressões - Formula
- Textos não devem usar aspas, ao menos se tiver vírgula. Exemplo: [Nome do Vendedor]={YURI NICOLETT, JULIAN SCATAMACHIA, "ALEXANDRE, O GRANDE"}
- Para a regra anterior, também será necessário usar aspas em caso de espaço no início ou fim do texto. Exemplo: [Nome do Vendedor]={" ESPAÇO ANTES","ESPAÇO DEPOIS"}
- Filtros com mais de um campo devem ser separados por vírgula. Exemplo: [Filtro1]={1,2,3},[Filtro2]={YURI NICOLETT, JULIAN SCATAMACHIA}
Voltando ao projeto
OK, posso criar vários filtros para o mesmo usuário, mas como posso definir quais filtro deve ser interpretado por relatório? Melhorando a pergunta: Como posso definir que no relatório de vendedores, o usuário "Yuri Nicolett" tenha o valor 1 para a coluna COD_VENDEDOR selecionado e para o relatório de supervisores, tenha o valor 100 para a coluna COD_SUPERVISOR?
Resposta simples: Conexões!
- Conexão: nome da conexão. Ao especificar isso, você pode criar filtros diferentes com base em campos com os mesmos nomes de conexões diferentes no mesmo aplicativo. A conexão deve existir no servidor.
A resposta estava ali o tempo todo? Pior que estava! Eu também demorei a perceber
OK, já sabemos o caminho das pedras, vamos criar a tabela de filtros, no Qlik Sense, e também preencher a coluna "Filters" para o relatório de usuários.
Criar tabela de filtros (Qlik Sense)
1- Vou reutilizar a tabela de Hierarquia que foi gerada no post anterior (não se preocupe, tem um qvf com o código pronto) para gerar os filtros de vendedores:
Estou mantendo a mesma regra, de usuários, para definir o e-mail, porém agora tenho duas diferenças: A conexão e o filtro.No caso do vendedor, estou chamando a conexão de "Conexao_Vendedor" e o filtro é o valor da coluna COD_VENDEDOR.
IMPORTANTE: Para criar a conexão do NPrinting, teremos que usar a mesma nomenclatura que estamos declarando aqui.
2- O resultado do código anterior será a tabela abaixo:
Sim, ainda esta duplicando a linha para o "YURI NICOLETT", iremos tratar adiante.
3- Vamos gerar a mesma tabela, porém para supervisor:
Repare que alterei o nome da conexão e o conteúdo do filtro é o valor do campo COD_SUPERVISOR
4- Agora vamos tratar a linha duplicada do vendedor "YURI NICOLETT" e também gerar as demais informações necessárias para o cadastro de filtros:
Calma... vou explicar melhor, mas veja o resultado final:
- [%ChaveUsuarioNPrinting]: Este campo não é usado no NPrinting, uso apenas de base guia para o painel do QlikSense.
- [Filter_Name]: O nome do filtro receberá o tipo de filtro (Vendedor/Supervisor) e o nome do identificador único do usuário (e-mail)
- [Filter_Description]: Apenas um texto descritivo
- [Filter_App]: Nome da App gerada no NPrinting
- [Filter_Enabled]: O filtro deve estar ativo
- [Filter_Connection]: O nome da conexão gerada no NPrinting
- [Filter_Values]: Não esta definido, pois aqui é para selecionar valores do tipo texto
- [Filter_Numeric Values]: É a definição do filtro que será realizado. Fique atento que "COD_VENDEDOR" deve ser o nome da coluna no QlikSense, em que o NPrinting vai selecionar ao gerar o relatório.
- [Filter_Formulas]: Não esta definido, pois aqui é para selecionar valores com expressões
Não esqueçam:
- O nome do filtro deve seguir um padrão, SER O MESMO, entre o cadastro de usuários e cadastro de filtro
- Se determinado usuário vai receber mais de um filtro, todas as informações devem estar na mesma linha do cadastro de filtro. Maiores informações sobre cadastro de filtro clique aqui!
- O nome da app deve ser o mesmo nome que gerou no NPrinting
- O nome da conexão deve ser o mesmo nome que gerou no NPrinting e, não se esqueçam, aqui é o segredo para definirmos que o relatório de vendedor vai usar o filtro da conexão de vendedores.
5- Vamos repetir o passo 4 para o supervisor:
Após a execução desse script, as tabelas serão auto-concatenadas (quando duas tabelas possuem as mesmas colunas, elas se concatenam automaticamente).
Para exibir a tabela, vou cria-la na "Visão Geral do Aplicativo":
Show de bola! Agora tenho todos os meus filtros separados:
- Se meu vendedor possui mais de um código, esses valores estarão listados em [Filter_Numeric Values]
- Se o mesmo usuário, definido pelo e-mail, for um vendedor e um supervisor, este deverá ter definido um filtro pra cada
- Cada tipo de filtro esta separado em conexões diferentes, vendedores utilizarão a conexão: "Conexao_Vendedor" e supervisores utilizarão a conexão: "Conexao_Supervisor"
Opa, mas peraí! Não faltou adicionar o nome do filtro lá na tabela de Usuário?
6- Vamos preencher o campo "Filter" do cadastro de usuários. Note que vou apenas alterar o código passado no post anterior:
O comando Concat pode ter ficado estranho, mas ele seguirá o mesmo padrão:
- Vendedores: FiltroVendedor:EMAIL
- Supervisores: FiltroSupervisor:EMAIL
Utilizando a coluna [Usuario.Filtro] para preencher a coluna [Filters]:
Conclusão
Agora temos toda a estrutura de Usuários, Filtros e Grupos desenvolvida dentro do QlikSense, podendo importa-la para dentro do NPrinting (mostrado no post anterior):Reparem que na tabela de usuários, caso este possua mais de um filtro, será listado com vírgulas! O que vai definir qual filtro será usado para o usuário "YURI NICOLETT"? A conexão!
Mas Yuri, vou ter que criar várias conexões, do mesmo QVF, que possui as mesmas informações, só para que o NPrinting consiga fazer a escolha do filtro? Sim!
Também não acho o processo muito inteligente, mas foi o que consegui para atender as necessidades do projeto. Existe outra? Não sei, ainda não encontrei.
Ok, ok... mas e agora? Como que faço o disparo? Hehe, vou explicar direito no próximo post!
No próximo post, além de explicar como será feita a distribuição dos relatórios, irei refazer toda a parte do NPrinting:
- App
- Conexão
- Construção do relatório de usuários, filtros e grupos
- Construção da tarefa de geração do relatório de usuários, filtros e grupos
- Construção da tarefa de importação dos usuários, filtros e grupos
- Construção do relatório de vendedores
- Construção do relatório de supervisores
- Construção da tarefa de geração do relatório de vendedores
- Construção da tarefa de geração do relatório de supervisores
Arquivos para download
O projeto esta sendo realizado em Qlik Sense, desta forma todos poderão ter acesso ao código fonte do QVF.Link para acesso ao diretório do projeto: AQUI
No diretório existem os arquivos:
- Modelo_Importacao_Nprinting.xlsx – Planilha modelo para importação dos usuários, filtros e grupos
- Hierarquia.xlsx – Planilha com a hierarquia de Vendedores e Supervisores
- CadastroUsuarios.xlsx – Relatório gerado no NPrinting, com os usuários e grupos já tratados
- CadastroUsuarios_Parte02.xlsx – Relatório gerado no NPrinting, com os usuários e grupos já tratados. Arquivo gerado com filtros
- BlogNicolett – Projeto NPrinting – Parte 01.qvf – QVF com o código para tratar os usuários - App gerada na parte 01 do post
- BlogNicolett – Projeto NPrinting – Parte 02.qvf – QVF com o código para tratar os usuários - App gerada na parte 02 do post