Prezados leitores(a), tudo bem?
Hoje a dica é técnica! Espero que gostem.
Enfrentei um problema bem interessante na utilização de macros no QlikView Server a um tempo atraz. Olha que bacana, a missão era a seguinte:
Great! é bom saber que o seu cliente gostou tanto do resultado e que gostaria de compartilhar isso com outros colaboradores (pena que não teve recursos para comprar mais licenças QlikView) ....não é??
Dessa forma, a aplicação geo seria um complemento ao QlikView, e para aqueles que não tem direito a uma licença (e que estejam inseridos dentro do negócio), possam ter uma visão territorial dos dados (muito melhor que google maps.. uma coisa nem se compara com a outra, o ArcGIS é especialista não só visualizador de dados em mapas).
Então ta, chagamos no problema:
Sabendo das triggers EDX, pensei da seguinte forma:
Somente posicional posicionar onde, dentro da estrutura do QlikView estamos:
Para isso, pensei na seguinte solução:
A função dele é executar uma macro que cria para cada tabela do Datacloud QlikView, um arquivo texto (separado por porto e virgula). O Script esta descrito abaixo:
e pronto, feito!
Assim a aplicação GIS (Geographic Information System) conseguirá ler os resultados do BI todos os dias após a atualização da aplicação principal!
Então surgiu uma idéia ....
Hoje a dica é técnica! Espero que gostem.
Enfrentei um problema bem interessante na utilização de macros no QlikView Server a um tempo atraz. Olha que bacana, a missão era a seguinte:
Criar uma base de dados SQL Server com os dados de uma aplicação QlikView para que outros programas pudessem acessar seu conteúdo atualizado.
Great! é bom saber que o seu cliente gostou tanto do resultado e que gostaria de compartilhar isso com outros colaboradores (pena que não teve recursos para comprar mais licenças QlikView) ....não é??
nada disso! :-)
A aplicação que irá conectar-se a esse banco tem como objetivo espacializar os dados e prover mapas temáticos baseado no ArcGIS da Esri.
Dessa forma, a aplicação geo seria um complemento ao QlikView, e para aqueles que não tem direito a uma licença (e que estejam inseridos dentro do negócio), possam ter uma visão territorial dos dados (muito melhor que google maps.. uma coisa nem se compara com a outra, o ArcGIS é especialista não só visualizador de dados em mapas).
Bem, vamos voltar um pouco aos conceitos:
- QlikView executa macros em VBScript ou JavaScript (odeio macros!)
- Essa macros rodam normalmente no clientes IEPlugin mas não executam via AJAX (somente as funções são executadas pelo nosso querido cliente Javascript e XML Assíncrono!)
- É conhecido de todos que frequentaram o QlikDev (http://www.qlikers.com.br/) que a tendência é as macros, a longo prazo, deixarem de existir (ótimo!!!)
- Quando uma macro executa "in server side" ela passa por um filtro de segurança (não me pergunte qual nem como ele funciona, só sei que existe... tipo casamento de anão, tempestade geomagnética, coisas assim). Mas pelo que interpretei durante esse processo é que, se o usuário tentar executar algo que interaja diretamente com os resultados da aplicação, não execute! Ex: Reload, reload parcial (REPLACE LOAD), transferência de arquivos, etc.
Então ta, chagamos no problema:
Como executar macros in server side, para gerar o banco de dados SQL Server que preciso?
Mais conceitos:
As triggers EDX executam eventos externos do QlikView. Essas triggers podem ser a partir de comandos externos (arquivos) e comandos de bancos de dados (as triggers tradicionais);
- As triggers EDX, somente estão disponíveis quando utilizando o licenciamento Publisher;
- Não confundam a trigger menciona aqui com a mudança que aconteceu a partir da verão 9, onde os jobs e tasks passaram a ser chamados de triggers, aqui estamos falando de triggers EDX.
Sabendo das triggers EDX, pensei da seguinte forma:
Somente posicional posicionar onde, dentro da estrutura do QlikView estamos:
Para isso, pensei na seguinte solução:
Como fiz isso?? Não é mto simples, mas vamos lá!
Criei um arquivo qlikview chamado Exporta_TXT.qvw, este arquivo contém o arquivo qvw final (publicado no accesspoint).
A função dele é executar uma macro que cria para cada tabela do Datacloud QlikView, um arquivo texto (separado por porto e virgula). O Script esta descrito abaixo:
set obj = ActiveDocument.GetSheetObject("TB01")
obj.Export "\\WWW.CAMINHOWEB.COM.BR\BI\ARQUIVO_TB001.txt", ";"
obj.Export "\\WWW.CAMINHOWEB.COM.BR\BI\ARQUIVO_TB001.txt", ";"
através de um script no SQL Server, é possível incluir esses arquivos texto no banco na forma de tabelas, prontas para a aplicação GIS ler e espacializar os dados :-)
Para rodar o Exporta_TXT.qvd, criei uma trigger EDX chamada Exporta_TXT na aba System, opção supporting Tasks que, no campo command line statement executasse o reload da aplicação Exporta_TXT.qvw.
e pronto, feito!
Assim a aplicação GIS (Geographic Information System) conseguirá ler os resultados do BI todos os dias após a atualização da aplicação principal!
Então surgiu uma idéia ....
Como poderia fazer para, a partir das seleções realizadas no QlikView, conseguir visualizar os resultados na aplicação GIS?
Obs.:Pode ser através de um botão "Visualizar no Mapa" :-)
Eu resolvi o problema!
Mas para posta-lo, primeiro eu preciso da contribuição de vcs!
Se cada um der a sua opinião, podemos criar uma solução ainda melhor juntos! :-)
O que acham???
Grande Abraço! :-)

