BusinessObjects

O blog do Consultor BO

Buscar itens em listas ou combos no Xcelsius

Hoje irei compartilhar com vocês uma técnica muito interessante para trabalhar com listas de seleção muito grandes. Essa técnica funciona apenas com dashboards dinâmicos (com conexões de dados), a principio Querys as a Web Service (QaaWS) ou outras fontes dependendo da arquitetura.

Para esse exemplo eu irei utilizar o QaaWS acessando o universo eFashion. Eu sei que no BO 4.0 é possível trabalhar com querys diretamente dentro do dashboard, porém eu vou fazer dessa forma que funciona tanto no BO 4.0 quanto no BO 3.1.

Uma das limitações do Xcelsius é o número de linhas na planilha. Vamos tomar esse dashboard abaixo como exemplo:
Painel 1

Estamos tratando de um painel simples, onde selecionamos um produto e vemos as vendas dele mensalmente em um gráfico de barra. Essa lista de produtos do universo eFashion é a dimensão “SKU desc”, e contém em torno de 200 itens. São poucos itens, um número suportável para o Xcelsius (o máximo recomendado é de 512), porém vamos supor que em uma situação real estejamos lidando com uma lista de 10.000 itens. Agora sim a coisa ficou complicada. É praticamente impossível carregar uma lista de 10.000 itens em um List Box no Xcelsius, e também não é nada prático para a navegação do usuário. Uma das técnicas utilizada em várias ferramentas de TI é uma caixa para a busca de itens.

Xcelsius Busca Lista 1

A primeira é uma lista simples, a segunda é uma lista com busca de itens, que no caso da imagem a busca é por itens com o texto “T-Shirt”.

Com essa técnica podemos limitar o tamanho da lista em que o usuário irá navegar. O usuário não precisa de uma lista de 10.000 itens para navegar, mas ele pode procurar os itens desejados para analisar. Portanto essa técnica torna viável um painel em que se tenha uma lista “virtual” de 10.000 itens.

Já vou entregar o ingrediente secreto: o operador SQL LIKE.

 LIKE (Transact-SQL):
 “Determina se uma cadeia de caracteres específica corresponde a um padrão especificado. Um padrão pode incluir caracteres normais e curingas. Durante a correspondência de padrões, os caracteres normais devem corresponder exatamente aos caracteres especificados na cadeia de caracteres…”.

Vou mostrar como funciona essa lista com procura.

Consulta Como um Serviço Web

Primeiramente precisamos montar uma query no QaaWS:

  1. Abra o QaaWS;
  2. Clique no botão “New Query”;
  3. No passo 1 (Description), dê o nome “dash_demo1_produtos_c_proccura”. Clique em avançar;
  4. No passo 2 (Select a universe), selecione o universo eFashion. Clique em avançar;
  5. No passo 3 (Query), arraste o objeto [SKU desc] para a caixa de Result Objects;
  6. Clique no botão de Manage Shorts para ordenar o resultado, nessa tela selecione o objeto [SKU desc] e clique em OK;
  7. Arraste o objeto [SKU desc] para a caixa de Filter Objects;
  8. O operador que veio na condição provavelmente foi o “In list”, altere para “Matches pattern”. Esse operador é o LIKE do SQL;
  9. Clique no botão ao lado do operando (da caixa de texto onde deve estar escrito “Type a constant”) e selecione “Prompt”. Observe que o operando agora está desabilitado e apresenta o texto “Enter value(s) for <SKU desc>”;
  10. Surgiu um novo botão ao lado do operando, esse botão são as definições do prompt. Clique nesse botão;
  11. Na propriedade Prompt text coloque o texto “SKU_desc”. Clique em OK;
  12. Sua consulta deve ficar igual a essa imagem:
    Xcelsius Busca Lista 3
  13. Clique em Next para irmos ao ultimo passo: Preview;
  14. Nesse passo a query será testada, portanto esse prompt será solicitado em uma nova tela. No campo “Type a value” coloque o caractere “%” e clique em OK. A consulta será executada e listará os 50 primeiros registros retornados;
    Xcelsius Busca Lista 4
  15. Clique em Publish e a query será publicada;
  16. Para utilizar essa consulta no Xcelsius precisamos da URL do WSDL. Então, selecione a query e as propriedades dela serão exibidas na parte da direita;
  17. Clique no botão “To Clipboard” e a URL será copiada. Salve essa URL em um bloco de texto, anotação, etc. O importante é guardar essa URL;

Dashboard no Xcelsius

Os componentes utilizados são:
Xcelsius Busca Lista 2

Essa é a planilha:
Xcelsius Busca Lista 5
Esses são os mapeamentos da Caixa de Listagem (List Box):
Xcelsius Busca Lista 6.1 Xcelsius Busca Lista 6.2

  • Título: Plan1!$B$5
  • Rótulos: Plan1!$B$7:$B$18
  • Inserção de dados – Destino: Plan1!$B$6

Esses são os mapeamentos do Texto de Entrada (Input Text):
Xcelsius Busca Lista 7

  • Vincular a célula: Plan1!$B$2
  • Inserção de dados – Destino: Plan1!$B$2

Esses são os mapeamentos da consulta como serviço web (QaaWS):
Xcelsius Busca Lista 8.1

  • Valores de entrada – sku_desc_like: Plan1!$B$3
  • Valores de saída – SKU_desc: Plan1!$B$7:$B17

Xcelsius Busca Lista 8.2

  • Atualizar ao acionar – Célula do acionador: Plan1!$B$3

Agora vou explicar o que é feito nas células da Caixa de Listagem:
Xcelsius Busca Lista 9
A Caixa de Listagem utiliza como lista essas 12 células em laranja: B7:B18, porém os dados da query são descarregados em 11 células laranja, exceto a ultima: B7:B17. Essa ultima célula da lista B:18 (que esta destacada com borda preta) tem a função de informar ao usuário se a pesquisa excedeu o limite da lista. Lá consta a seguinte fórmula:
=SE(B17=””;””;”<< Muitos Itens >>”)
Ou seja, se o resultado da query retornar 11 itens, portanto a célula B:17 for preenchida, a ultima célula apresentará o texto “Muitos Itens”, se não, ela ficará em branco mesmo. Essa funcionalidade esta ligada a configuração “Ignorar células vazias” da Caixa de Listagem.
Obs: Nesse exemplo eu estou utilizando uma lista de 12 itens para facilitar a representação do exemplo. O número de itens fica a seu critério, desde que a lógica continue a mesma;
Agora vou explicar o que é feito nas células do Texto de Entrada:
Xcelsius Busca Lista 10
O conteúdo Texto de Entrada é colocado na célula B:2, porém a query utiliza a célula B:3 como parâmetro de entrada “sku_desc_like”. Como vimos na construção da query , esse parâmetro é o operando da condição com o operador Like, portanto eu preciso trabalhar com os caracteres curinga (%) para ele trazer algo, ai que entra a fórmula da célula B:3:
=”%”&B2&”%”
Nessa fórmula acrescenta o caractere curinga (%) no início e no fim do texto da célula B2, ou seja, no texto que o usuário preencheu no componente Texto de Entrada. Utilizei esse critério considerando que o usuário vai digitar o texto que ele quer e será retornado qualquer coisa que tenha o texto, como no exemplo do termo “T-Shirt”, mas você pode utilizar o critério que o usuário sabe trabalhar com o caractere curinga e ele monta a expressão que ele quer buscar, por exemplo “%Long%T-Shirt%”. Nesse caso a fórmula deveria ser:
=SE(B2=””;”%”;B2)
É necessário fazer uma validação que o valor do usuário não esteja vazio, se o usuário não preencher nada a consulta trás qualquer coisa.
Clique aqui para fazer o download do projeto em Xcelsius.

, , , , , ,

3 thoughts on “Buscar itens em listas ou combos no Xcelsius

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *