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:

  1. O nome do filtro deve seguir um padrão, SER O MESMO, entre o cadastro de usuários e cadastro de filtro
  2. 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!
  3. O nome da app deve ser o mesmo nome que gerou no NPrinting
  4. 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:

  1. App
  2. Conexão
  3. Construção do relatório de usuários, filtros e grupos
  4. Construção da tarefa de geração do relatório de usuários, filtros e grupos
  5. Construção da tarefa de importação dos usuários, filtros e grupos
  6. Construção do relatório de vendedores
  7. Construção do relatório de supervisores
  8. Construção da tarefa de geração do relatório de vendedores
  9. 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