Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Fala pessoal, tudo beleza?
Afinal, o que é e como construir um relatório ad-hoc?
Em primeiro lugar precisamos entender o termo ad-hoc.
Sempre que utilizamos o termo ad-hoc, estamos se referindo a algo temporário e que se destina para um fim específico.
Neste tipo de relatório, geralmente, construímos um tabelão em que o usuário seleciona as dimensões e expressões que necessitam visualizar. Engraçado é a palavra temporário, pois se tratando de uma ferramenta super poderosa um simples tabelão não pode ser vinculado ao BI de uma grande corporação.
Opinião: Sabemos que isso não é verdade. O layout é importante? Muito, mas o objetivo principal é conseguir atender as necessidades do cliente da melhor maneira possível. Se para atender essa necessidade eu preciso desenvolver apenas tabelas, então bora :D!
Como falado anteriormente, podemos desenvolver o relatório ad-hoc apenas dentro de um tabelão ou então fazer o próprio usuário escolher o tipo de gráfico. Para esse primeiro post do assunto, irei demonstrar apenas a funcionalidade do usuário selecionar as dimensões e expressões que pretende visualizar dentro de um tabelão.
Em primeiro lugar precisamos criar um campo com as possíveis dimensões e outro com as expressões.
IMPORTANTE: A nomenclatura desse campo deve respeitar o prefixo utilizado na função HidePrefix, pois estes campos não deverão estar disponíveis para nossos usuários desenvolvedores (com licença named).
Vamos para o script!
1° Passo) Crie uma aba chamada AD-HOC e crie os campos (no meu exemplo vou utilizar INLINE, mas você pode ficar livre para colocar esses campos em planilha ou dentro de uma tabela em seu BD).
OBS: O conteúdo dentro do campo de dimensão e/ou expressão não necessariamente precisam possuir o mesmo nome da dimensão que será utilizada na tabela.
SET HidePrefix = '_';
//Tabela com os campos de dimensões
Dimensões:
LOAD * INLINE [
_dimensao
Dimensão1
Dimensão2
Dimensão3
Dimensão4
Dimensão5
Dimensão6
Dimensão7
Dimensão8
];
//Tabela com expressões
Expressões:
LOAD * INLINE [
_expressao
Expressão1
Expressão2
];
2° Passo) Agora precisamos criar um gráfico do tipo Tabela Simples ou Tabela Dinâmica.
3° Passo) Após selecionar o tipo de gráfico, adicione a seguinte condição de cálculo, conforme imagem:
Condição a ser preenchida: GetSelectedCount(_dimensao) > 0 and GetSelectedCount(_expressao) > 0
Traduzindo a expressão: Serão exibidos os dados do gráfico somente se houver, pelo menos, uma dimensão e uma expressão.
4° Passo) Agora precisamos adicionar as dimensões do gráfico. Note que essas dimensões não são as criadas na tabela Dimensões no primeiro passo.
Após adicionar cada uma dessas dimensões, devemos habilitar a condição "Permitir Condicional" e colocar a condição conforme a imagem abaixo:
Condição a ser preenchida: SubStringCount(CONCAT('|'&_dimensao,'|') & '|', '|Dimensão1|')
Traduzindo a expressão: Estou concatenando todos os possíveis valores do campo _dimensao e estou procurando pela string |Dimensão1|, ou seja, se o usuário selecionou o valor Dimensão1, então este campo será exibido em nosso relatório. Por que estou utilizando o pipe "|" para concatenar e para buscar a string? Pois se houver um campo Dimensão1 e um Dimensão11, então o delimitador pipe irá diferencia-lo na busca.
5° Passo) É necessário fazer essa ação para cada dimensão que o usuário pode selecionar.
6° Passo) Para as expressões deve-se habilitar o checkbox "Condicional" e fazer o mesmo, porém agora utilizando o campo _expressao na condicional, conforme imagem:
Condição a ser preenchida: SubStringCount(CONCAT('|'&_expressao,'|') & '|', '|Expressão1|')
7° Passo) Disponibilizar para seleção os campos _dimensao e _expressao.
8° Passo) Perfumarias!
Para fazer o download da aplicação de exemplo clique aqui.
Conclusão: Eu gosto muito de colocar um relatório desse tipo nos projetos, pois o usuário fica com a liberdade de criar um gráfico de acordo com o seu desejo (dentro das dimensões e expressões pré-estabelecidas).
O cuidado que precisamos ter é limitar a quantidade de dados a serem exibidos se possibilitarmos a visualização de informações de baixo nível.
É isso pessoal!
Na próxima semana tem mais
Valeu...Yuri, já tinha visto estes relatórios em alguns exemplos mas como vocês mostrou entendi melhor...
cool Nicolett.
Muito bom Yuri, excelente, muito obrigado pela publicação!
Valeu pessoal!
Pessoal, bom dia!
Alguém sabe me informar se esse relatório eu consigo desenvolver também no Qlik Sense?
Obrigada!
nicolett.yuri Yuri,
Ficou que show cara, sua explicação esclarece muitas coisas relacionadas a esse conceito.
Muito obrigado por sempre compartilhar conhecimento de alta qualidade rsrs
Abs,