terça-feira, 15 de março de 2011

Treinamento QlikView - módulo Desenvolvedor

A Toccato Academia Florianópolis abre inscrições para nova turma de treinamento QlikView, Módulo Desenvolvedor. As aulas acontecem entre 21 e 25 de março. Com conteúdo atualizado para a versão QlikView 10, além de uma nova abordagem didática que oferece maior interação no treinamento.

As inscrições estão abertas até o dia 18 de março pelo e-mail inscricao@toccato.com.br ou pelo fone +55 (48) 3236.3004. No Módulo Desenvolvedor os usuários vão conhecer os princípios de utilização e criação de gráficos e objetos, carga de dados e como disponibilizar uma aplicação através do QlikView Server. As vagas são limitadas.

* O quê: Treinamento QlikView Módulo Desenvolvedor em Florianópolis
* Quando: De 21 a 25 de março
* Onde: Toccato Academia Florianópolis (Centro de Convenções e Eventos do Corporate Park, Rodovia SC 401, nº 8600, Sala 1, Bloco 8, junto à sede da Toccato Distribuidora QlikView)
* Inscrições: até 18 de março / inscricao@toccato.com.br / +55 (48) 3236.3004
* Importante: o profissional a ser treinado deve trazer notebook.

Mais informações

sábado, 12 de março de 2011

Trabalhando com mais de uma Tabela Fato

Muitas vezes necessitamos associar dados entre duas ou mais Tabelas Fatos, o maior problema é que nem sempre temos 100% das informações associadas entre as Tabelas Fato ou temos dimensões diferentes entre elas.

Para resolvermos isso vamos criar uma tabela de ligação (Link Table).

Neste post falarei sobre a solução através de Link Table.

Temos as seguintes tabelas para criar o nosso modelo de dados associativo no QlikView.
Vendas, Orçamento, Cliente, Filial, Vendedor e Tipo Venda.


Como vamos utilizar a solução de Link Table, primeiramente temos que criar um campo chave utilizando a função AutoNumber() concatenando os campos comuns entre as tabelas fato e iremos comentar os campos envolvidos na chave.

Venda:
LOAD
AutoNumber(Data&'|'&[Código Vendedor]) as %ChaveLinkTable,
//Data,
[Código Venda],
[Código Cliente],
//[Código Vendedor],
[Código Tipo Venda],
[Código Filial],
[Valor Venda]
FROM
QVD\Venda.QVD
(qvd);

Orçamento:
LOAD
AutoNumber(MakeDate(Right([Mês Ano],4),Left([Mês Ano],2),1)&'|'& [Código Vendedor]) as %ChaveLinkTable,
//[Código Vendedor],
[Valor Orçado]
FROM
QVD\Orçamento.QVD
(qvd);

Agora que já criamos a chave e eliminamos os campos comuns entre as tabelas fatos, vamos criar a tabela de ligação (LinkTable).

//===========================================
// LINK TABLE
//===========================================
LinkTable:
LOAD DISTINCT
AutoNumber(Data&'|'&[Código Vendedor]) as %ChaveLinkTable,
Data,
[Código Vendedor]
FROM
QVD\Venda.QVD
(qvd);

LinkTable:
LOAD DISTINCT
AutoNumber(MakeDate(Right([Mês Ano],4),Left([Mês Ano],2),1)&'|'& [Código Vendedor]) as %ChaveLinkTable,
Date(MakeDate(Right([Mês Ano],4),Left([Mês Ano],2),1),'DD/MM/YYYY') as Data,
[Código Vendedor]
FROM
QVD\Orçamento.QVD
(qvd);

Agora temos três tabelas no nosso modelo de dados associativo.
Com essa nova tabela gerada com base nas informações das duas fatos, garantimos que teremos todos possibilidade de combinações entre as Tabelas Fato.
Podemos continuar a carga das demais tabelas do modelo.

Cliente:
LOAD
[Código Cliente],
[Nome Cliente]
FROM
QVD\Cliente.QVD
(qvd);

Filial:
LOAD
[Código Filial],
[Descrição Filial]
FROM
QVD\Filial.QVD
(qvd);

Vendedor:
LOAD
[Código Vendedor],
[Nome Vendedor]
FROM
QVD\Vendedor.QVD
(qvd);

[Tipo Venda]:
LOAD
[Código Tipo Venda],
[Descrição Tipo Venda]
FROM
[QVD\Tipo Venda.QVD]
(qvd);


Agora temos a nossa dimensão Vendedor associada a nossa tabela de ligação (LinkTable).

Para concluirmos o nosso modelo de dados associativo, vamos criar a tabela de calendário.

TMP_Calendario:
LOAD DISTINCT
Data
FROM
QVD\Venda.QVD
(qvd);

TMP_Calendario:
LOAD DISTINCT
Date(MakeDate(Right([Mês Ano],4),Left([Mês Ano],2),1),'DD/MM/YYYY') as Data
FROM
QVD\Orçamento.QVD
(qvd);

Calendario:
NoConcatenate
LOAD
[Data] as Data,
Day(Data) as Dia,
Month(Data) as Mês,
Year(Data) as Ano,
DayNumberOfQuarter(Data) as [Dia Trimestre],
DayNumberOfYear(Data) as [Dia Ano],
MonthName(Data) as [Mes Ano],
QuarterName(Data) as [Quarter],
Week(Data) as [Semana],
ceil(Month(Data)/3)&'º Trim' as [Trimestre],
WeekDay(Data) as [Dia Semana]
Resident TMP_Calendario;

DROP table TMP_Calendario;

Após a criação da tabela calendário com base nas informações das tabelas de Venda e Oraçamento, temos o seguinte modelo.

sexta-feira, 11 de março de 2011

Universal Touch Client

Isso mesmo pessoal, a QlikTech esta trabalhando em um cliente para dispositivos móveis Touch Screen. Esse novo cliente acessa o QlikView diretamente no navegador de seu dispositivo móvel, já testei no iPad e funciona muito bem e melhor que a aplicação do QlikView disponível na App Store.
Você pode testar esse novo cliente pelo Safari do seu dispositivo móvel. Também é possivel testar no seu Mac ou PC instalando o navegador Safari.

Qlik aqui para acessar pelo Safari.


Em breve também terão demonstrações em outros aparelhos como o iPhone, Android e novo Blackberry.


Agora temos que esperar esse Beta virar realidade para alegria geral da comunidade QlikView.

quinta-feira, 3 de março de 2011

Diferenças entre QlikView Server EE e SBE


Enterprise Edition (EE)


O QlikView Server
Enterprise Edition (EE) é recomendado para empresas com muitas pessoas acessando as informações e necessitam de integrações em seus ambientes corporativos.



Oferecendo recursos como documentos QVW ilimitados, colaboração no ambiente QlikView Server, integração com sistemas de segurança de terceiro e Clusters de servidores.


Small Business Edition (SBE)


Projetado para implementações menores. Possui as seguinte limitações:

  • Para uso apenas de Named e Document CAL’s
  • Limitado a 25 Named CALs
  • Limitado a 100
  • Document CAL’s
  • Sem suporte a servidores adicionais (impossível fazer cluster ou balanceamento de carga)
  • Sem suporte a criação e compartilhamento de objetos no QlikView Sever (Colaboração), sendo possível criação de marcadores no servidor com a versão do QV10 SR1 ou superior
  • Suporte apenas ao Windows Active Directory para segurança e controle de acesso.


Quadro comparativo entre as versões do QlikView Server.


Licenciamento



Licenciamento



EE



SBE



Named CAL’s



Sim



Sim Máximo 25



Session CAL’s



Sim





Usage CAL’s



Sim





Document CAL’s



Sim



Sim Máximo 100



Permissão de usuários Externos?



Não



Não



Clientes QlikView



Clientes QlikView



EE



SBE



AJAX



Sim



Sim



Plugin Internet Explorer



Sim



Sim



QlikView Desktop



Sim



Sim



iPhone/iPad



Sim



Sim



Blackberry



Sim



Sim



Android



Sim



Sim



Outro dispositivo Móvel (Java)



Sim



Sim



Escalabilidade



Escalabilidade



EE



SBE



Suporte a Cluster



Sim



Não



Documentos Ilimitados



Sim



Sim



Integração



Integração



EE



SBE



Integração com sistema de segurança de terceiros



Sim



Não



Dynamic update (Real-Time Server) - (requerido licença
adicional)



Sim



Não






Conexão Active Directory (AD)

Para fazer uma conexão ao Active Directory (AD), é necessário um usuário com permissão de acesso ao AD, não será explicado nesse post como é feita a criação desse usuário.

Você deve criar uma conexão OLE DB, para isso abra o editor de script e siga os passos.


Escolha o provedor "OLE DB Provider for Microsoft Directory Services".


Informe o endereço do AD, bem como o usuário e senha criados anteriormente. Clique em Testar conexão.


Após a criação conforme indicado acima, você verá a seguinte linha de conexão.

OLEDB CONNECT TO [Provider=ADsDSOObject;User ID=Dominio\Usuário;Encrypt Password=False;Data Source=LDAP://dominio.com.br;Mode=Read;Bind Flags=0;ADSI Flag=-2147483648] (XPassword is IGGRQZVMODaCWbB);

Depois você pode fazer a extração dos grupos e usuários dos grupos, nesse caso, os grupos são pré-determinados.

Veja exemplo.


//************* Grupos AD ****************//
FOR each arg in 'Grupo1','Grupo2','Grupo3'

Groups:
LOAD
distinguishedName as GroupKey,
cn as Grupo;
SQL select
distinguishedName,
cn
FROM 'LDAP://DC=dominio,DC=com, DC=br'
WHERE objectCategory='group' AND cn ='$(arg)';

//grava as informações do Grupo
Store Groups into Groups_$(arg).qvd;

//Alimenta a variável com o valor do campo GroupKey
LET vGK = peek('GroupKey');
//Exibe o nome do Grupo e Chave do Grupo
TRACE GRUPO - $(arg) - $(vGK);

//Busca os usuários do Grupo
Users:
LOAD
'$(vGK)' as GroupKey,
upper(sAMAccountName) as LanID,
cn as Name;
SQL SELECT
sAMAccountName,
cn
FROM 'LDAP://DC=dominio,DC=com, DC=br'
WHERE memberOf='$(vGK)';

//grava os usuários do Grupo
Store Users into \Users_$(arg).qvd;

//Elimina as tabelas do arquivo qvw
drop table Users;
drop table Groups;
NEXT arg