quarta-feira, 18 de dezembro de 2013

Trabalhando com cores no QlikView

Área de Cores

 A maioria das superfícies coloridas no layout do QlikView pode ser formatada na caixa de diálogo Área de Cores. Especifique uma cor sólida para cobrir toda a área ou um efeito gradiente de cor. As opções de gradiente de cor descritas abaixo não estão disponíveis para algumas finalidades e, por isso, estarão desabilitadas na caixa de diálogo, por exemplo, para cores de texto. 



Cor Sólida Opção básica que utiliza uma única Cor da Base uniforme.  
Um Gradiente de Cor Esta opção introduz o uso de variações de Brilho para criar um efeito de gradiente de cor.  
Gradiente de Duas Cores Um efeito de gradiente de cor é criado entre a Cor da Base e uma Segunda Cor especificada.  

As cores podem ser fixas ou calculadas, conforme especificado nos grupos Cor da Base e Segunda Cor.  

Qualquer configuração de cor pode ser visualizada na caixa de diálogo. 

No grupo Cor da Base, a cor da base é determinada para superfícies sólidas e gradientes. 

Fixo Esta alternativa especifica uma única cor básica. Clique no botão colorido para alterar a cor.  
Calculado A cor pode ser calculada dinamicamente em uma expressão. A expressão deve ser uma representação de cor válida, obtida usando as Funções de Cor. Clique no botão ... para abrir a caixa de diálogo Editar Expressão, que facilita a edição de fórmulas longas. Se o resultado da expressão não for uma representação de cor válida, o programa definirá a cor preta como padrão.  
Brilho Ao usar Um Gradiente de Cor, este deslizador determina o sombreamento/brilho relativos da cor na extremidade oposta do gradiente. A configuração do deslizador varia de mais escuro (esquerda) a mais claro (direita). Na posição central, a configuração é exibida como uma cor uniforme.  

No grupo Segunda Cor, a segunda cor é determinada para gradientes de duas cores. 

Fixo Esta alternativa especifica uma única cor básica. Clique no botão colorido para alterar a cor.  
Calculado A cor pode ser calculada dinamicamente em uma expressão usando as Funções de Cor.  

Se a opção Um Gradiente de Cor ou Gradiente de Duas Cores foi selecionado, a direção do efeito gradiente será determinada pelas configurações no grupo Estilo de Gradiente. É possível atingir resultados diferentes combinando as alternativas disponíveis (Horizontal, Vertical etc.) clicando em uma das quatro áreas de botão, que representam a direção do gradiente. 


Funções de Cor

Essas funções podem ser usadas em expressões de cor nas propriedades de objetos de pasta, oferecendo suporte a cores calculadas em gráficos de imagem. 

As funções RBG, HSL e syscolor sempre retornam uma cor com o valor alfa de 255 (opaco). 

opcionalmente, para qualquer cor, é possível fornecer um parâmetro para o fator alfa. Um alfa de 0 corresponde à transparência total. Um alfa de 255 corresponde à opacidade total. 

color( n ) 

Esta função retorna a representação colorida do número da cor n na paleta do gráfico relevante. A representação colorida é um valor dual, no qual a representação textual está na forma 'RGB(red, green, blue)', em que r, g e b são números entre 0 e 255 que representam os valores das cores vermelho, verde e azul, respectivamente. A representação numérica é um inteiro que representa os componentes vermelho, verde e azul, como definidos no Visual Basic. Fora da expressão colorida calculada na caixa de diálogo Propriedades do Gráfico: Cores a função sempre retornará preto. 

RGB (e1, e2, e3

Esta função retorna a representação de uma cor definida pelo componente vermelho e1, componente verde e2 e componente azul e3. Todos os três parâmetros devem ser expressões que avaliam os inteiros no intervalo entre 0 e 255. A representação colorida é um valor dual, no qual a representação textual está na forma 'RGB(red, green, blue)', em que r, g e b são números entre 0 e 255 que representam os valores das cores vermelho, verde e azul, respectivamente. A representação numérica é um inteiro que representa os componentes vermelho, verde e azul, como definidos no Visual Basic. 

ARGB(alfa, e1, e2, e3) 

Esta função retorna a representação de uma cor definida pelo componente vermelho e1, componente verde e2 e componente azul e3, com um fator alfa (opacidade) de alfa. Todos os quatro parâmetros devem ser expressões que avaliam os inteiros no intervalo entre 0 e 255. A representação colorida é um valor dual, no qual a representação textual está na forma 'RGB(a, r, g, b)', em que a, r, g e b são números entre 0 e 255 que representam os valores de cores alfa, vermelho, verde e azul, respectivamente. A representação numérica é um inteiro que representa os componentes alfa, vermelho, verde e azul, como definidos no Visual Basic. 

HSL (matiz, saturação, luminosidade) 

Esta função retorna a representação colorida de uma cor definida por um valor de matiz entre 0 e 1, um valor de saturação entre 0 e 1 e um valor de luminosidade entre 0 e 1. A representação colorida é um valor dual no qual a representação textual está na forma 'RGB(r, g, b)', em que r, g e b são números entre 0 e 255 que representam os valores das cores vermelho, verde e azul, respectivamente. A representação numérica é um inteiro que representa os componentes vermelho, verde e azul, como definidos no Visual Basic. É possível definir, opcionalmente, um parâmetro para o fator alfa. Um alfa de 0 corresponde à transparência total. Um alfa de 255 corresponde à opacidade total.

black( ) 

Retorna a representação da cor RGB para preto (RGB 0,0,0).  

darkgray( ) 

Retorna a representação da cor RGB para cinza-escuro (RGB 128,128,128).

lightgray( ) 

Retorna a representação da cor RGB para cinza-claro (RGB 192,192,192).

white( ) 

Retorna a representação RGB do branco (RGB 255,255,255).

blue( ) 

Retorna a representação da cor RGB para azul (RGB 0,0,128).

lightblue( ) 

Retorna a representação da cor RGB para azul-claro (RGB 0,0,255). 

green( ) 

Retorna a representação da cor RGB para verde (RGB 0,128,0).

lightgreen( ) 

Retorna a representação da cor RGB para verde-claro (RGB 0,255,0).

cyan( ) 

Retorna a representação da cor RGB para ciano (RGB 0,128,128).

lightcyan( ) 

Retorna a representação da cor RGB para ciano-claro (RGB 0,255,255).

red( ) 

Retorna a representação da cor RGB para vermelho (RGB 128,0,0). 

lightred( ) 

Retorna a representação da cor RGB para vermelho-claro (RGB 255,0,0).

magenta( ) 

Retorna a representação da cor RGB para magenta (RGB 128,0,128). 

lightmagenta( ) 

Retorna a representação da cor RGB para magenta-claro (RGB 255,0,255). 

brown( ) 

Retorna a representação da cor RGB para marrom (RGB 128,128,0).

yellow( ) 

Retorna a representação da cor RGB para amarelo (RGB 255,255,0).

qliktechblue( ) 

Retorna a representação da cor RGB para azul QT (RGB 8,18,90).

qliktechgray( ) 

Retorna a representação da cor RGB para cinza QT (RGB 158,148,137). 



quarta-feira, 23 de outubro de 2013

Como construir um Dashboard

No último QlikDev Sampa, um tema abordado em uma das muitas palestras foi a criação de um dashboard.
Por Michael Anthony.


Conselhos práticos de design


Organização:  desenhe seu Dashboard



Consistência: Mantenha seu layout padronizado









Menos é mais - Deixe seu dashboard "CLEAN" e objetivo















“Spice” ( a cereja do bolo) - Informações relevantes com algo a mais















Processo de design


  • Defina KPI’s com usuários de negócios.  Sem palpites!
 Máximo de 6 métricas (se possível)
 Regra dos 5 segundos
  • Ordene os KPI’s em ordem de prioridade
  Identifique informações de suporte e as separe dos KPI’s (ex. Vendas x Meta)
  • Pense muito e desenhe o design - Lado Direito do cérebro
  O que vai onde e como?
  Como mostrar bom e ruim?
  • Defina um esboço e o fluxo de uso
  Está fácil de navegar?  Pergunte a outras pessoas
  Está obvio para os usuários?
  • Implemente o design -  Lado Esquerdo do cérebro
 Facilite seu trabalho com o QlikView Developer Tool Kit
  • Teste de usuário
Tenha certeza que todos KPI’s estão bem definidos
Certifique-se que todo seu trabalho é perceptível ao usuário sem qualquer “treinamento”

Design e construção do zero

Dados

  Licenças de Software
  Desempenho de vendas
  Atingimento de metas

Perfil dos usuários

  Presidência e diretoria
  Gerentes regionais

Continua....


terça-feira, 8 de outubro de 2013

Curso de Formação de Desenvolvedores QlikView

O Curso de Formação de Desenvolvedores QlikView (CFDQ) tem como objetivo formar consultores de Business Intelligence, desenvolvedores de sistemas informacionais com a tecnologia QlikView.

A formação completa do curso inclui 4 módulos: Básico, Avançado, Qlikview Server e Melhores Práticas.

Veja abaixo as modalidades de ensino do CFDQ:

Modalidade EAD e Presencial:

A matrícula pode ser feita por módulos, e nos cursos a distância o aluno poderá se organizar conforme sua agenda.

Saiba mais de cada módulo clicando sobre ele.


CFDQ Básico CFDQ Avançado    CFDQ Server  CFDQ Melhores Práticas



Curso Gratuito: Simplificando o Business Intelligence

O objetivo do curso é apresentar o conceito de Business Intelligence, sua evolução, seus benefícios e as diferenças entre as arquiteturas existentes. Além disso mostra na prática a utilização de uma ferramenta de BI no dia a dia de um gestor.

Dinâmica das Aulas
  • Vídeo aula;
  • Atividades obrigatórias;
  • Fórum de dúvidas;
  • Tutor;
  • O curso é online 24 horas e gratuito;
  • A inscrição pode ser realizada a qualquer horário;
  • Não é necessário fechar um determinado número de alunos para que o curso comece a funcionar. Você se inscreve e já pode começar!

Conteúdo Programático

  • O Business Intelligence na história
  • Conceito
  • Fluxo de informações para tomada de decisão
  • Diferenças entre consultas operacionais versus gerenciais
  • Benefícios
  • Conceitos Importantes
  • Arquiteturas de Business Intelligence
  • Apresentação prática de utilização de uma ferramenta de BI no dia a dia de um gestor


segunda-feira, 23 de setembro de 2013

Modelagem QlikView - Performance e Usabilidade

“As fontes e os dados terão de ser manipulados dentro do script para entregar o modelo de dados que melhor se adapte, para ambos performance e usabilidade importam.

Concatenar ou usar Tabela de Links?

  Para a maioria dos cenários a Concatenação é a melhor solução. É fácil de gerenciar, fácil de entender e demanda pouco esforço de desenvolvimento para pôr em prática.

  • Concatenação vem com uma chave de restrição.

   Ela não garante a completa  rastreabilidade da transação .

   Selecionando SalesID, não serão correlacionados os registros da tabela Budget. Isto não é rigorosamente verdade, mas pode ser verdade em muitos cenários, e, portanto, poderia ser destacada como uma restrição.

  • Tabelas de Link são um modelo mais tradicional, onde uma tabela de fatos substituto (link) é posto em prática para resolver todas as associações entre as tabelas de fatos e tabelas de dimensões
  • Isso pode parecer à primeira vista como uma solução à prova de bala para utilizar sempre - não é verdade.
  • O positivo das tabelas de link é resolver os relacionamentos como qualquer outra tabela faria. Isso dá a rastreabilidade completa à transação, mesmo dados implicitamente associados via outra tabela fato ficam rastreáveis (ao selecionar a tabela SalesCustomer - você verá os registros da tabela Orçamento associados).

   Inerentemente complexo de construir. Gerar a tabela no link não é tarefa fácil. Há consideravelmente mais verificações a introduzir no código para produzir o modelo.
   A tabela de link funciona como uma tabela desnormalizada, ou seja, que representa as associações de alto nível como a tabela Budget no Mês, ao nível de Grupo exigiria desnormalização para o menor denominador comum com outras fatos. Tabela Sales de Products e Data. Isto dá origem a um potencial grande volume de ligações na tabela de link necessário para resolver o mês e no Grupo correlacionando dados e produtos.
   Outra desvantagem não é exclusivo das Tabelas de Link – é igualmente um desafio ao concatenar tabelas de fatos.

  • Esquemas Estrelas & Snow Flake funcionam melhor no QlikView. Tabelas relacionais tendem a ter ciclos (referências circulares) e, portanto, não funcionam corretamente quando colocados em QlikView.
  • Os quatro principais diretrizes para a modelagem são:
  1. Apontar para um esquema em estrela. Quebrar as tabelas é bom, mas tente mantê-lo ao mínimo, pois pode prejudicar o desempenho por ter muitas tabelas penduradas.
  2. Quando desnormalizar dados (roll up) a fim de reduzir a quebra, pare de desnormalizar quando isto significar replicar registro em milhões de vezes - os ponteiros de memória necessária para armazenar o mesmo valor de uma enorme quantidade se torna significativa
  3. Para soluções de multi-fato, analise os requisitos para ver se uma solução de tabelas concatenadas atende às necessidades. Se o registro de rastreabilidade transação é crucial, ao invés de análise por meio de associação de dimensões comuns, ai sim, analisar se a tabela de ligação serviria. Se nenhum modelo é uma boa opção, um modelo de dados personalizado deve ser montado através de uma análise cuidadosa das necessidades. Ele pode incorporar elementos de ambos link e tabelas concatenadas.
  4. Em ambientes maiores seja com mais volume de dados ou maior complexidade ou a quantidade de usuários concorrentes, o design eficiente num documento QlikView se torna cada vez mais importante. Para este objetivo, por favor utilize as ferramentas à sua disposição de teste de desempenho.

Observações

  • NÃO existe uma melhor arquitetura.
  • A Arquitetura dependente totalmente dos Requisitos
Sistemas, habilidades, segurança, funcionalidade, flexibilidade, tempo, dinheiro e acima de tudo, Requisitos de Negócio!
  • Da mesma forma Melhores Práticas não são Universais
  • Aplicar as melhores práticas de acordo com cada situação

Considerações Finais…

  • Se os usuários finais rejeitarem o seu aplicativo então você falhou, independentemente da sua execução técnica.
  • As necessidades dos usuários finais e a experiência do usuário final deve sempre ditar a sua abordagem para o desenvolvimento de aplicações QlikView, incluindo modelagem de dados.
  • Muitas técnicas de data warehousing são diretamente aplicáveis a modelagem de dados QlikView.
  • Modelagem de dados está em curso há muitos anos e muitas mentes brilhantes têm contribuído para o campo, não precisamos reinventar a roda.

quarta-feira, 18 de setembro de 2013

Modelagem - Esquema Estrela e Tabela de Link

O esquema em estrela (algumas vezes referenciado como esquema junção estrela) é o estilo simples de esquema do data warehouse. O esquema em estrela consiste de algumas tabelas de fatos (possivelmente apenas um, o que justifica o nome) referenciando qualquer número de tabelas de dimensão. O esquema em estrela é considerado um importante caso especial do esquema floco de neve.
(Source, Wikipedia - http://en.wikipedia.org/wiki/Star_schema)







  • Este modelo funciona bem em um cenário de um evento único simplista. Mas, como o QlikView pode lidar com múltiplas fontes de dados a partir de muitas fontes de diferentes sistemas e arquivos, temos que trabalhar com vários cenários de eventos, ou muitas tabelas de fatos. 





  • No caso de várias tabelas de fatos o QlikView permite-nos criar uma tabela de link central que contém apenas as combinações de dados existentes
  • Em vez de juntar (Join) as tabelas, as dimensões da fato podem ser CONCATENADAS para uma tabela de link central
  • Esta tabela de link pode então ser ligada de volta as metricas da fato de um lado, e as tabelas de dimensão do outro


TABELA DE LINK

Quando eu uso uma tabela de ligação?
    Quando existem campos comuns em várias tabelas (há uma chave sintética) mas a maioria dos campos de cada quadro NÃO são compartilhadas.


•Neste exemplo, uma concatenação de tabelas fato seria a solução preferível, embora uma solução básica tabela de ligação também é válido.


A maioria dos campos de cada tabela de fatos não são compartilhados

Como faço para criar uma tabela de link?

1. Criar um campo chave com os campos comuns
2. Coloque todos os outros campos com o campo chave de #1


3. Crie uma nova tabela com a mesma chave (key link) e os campos comuns separadamente
        Usando DISTINCT


  • Se todas as tabelas não compartilham os mesmos campos exatos, crie chaves separadas para cada tabela na tabela de ligação
TABELAS

Sales:
Load
Year & ‘_’ & Month & ‘_’ & Branch & ‘_’ & [Item Number] as SalesKey,
 [Customer Number],
 [Invoice Number],
 [Order Number],
 [Salesman Number],
 [Invoice Date],
 [Sales Amount],
 [Sales Qty],
 [Cost Amount],
 [Margin Amount],
 [Unit of Measure]
 FROM Sales;

 Inventory:
 Load 
 Branch & ‘_’ & [Item Number] as InvKey,
 [On Hand Qty]
 FROM Inventory;

 Purchasing:
 Load
 Year & ‘_’ & Month & ‘_’ & Branch & ‘_’ & [Item Number] as POKey,
 [PO Number],
 [Req Delv Date],
 [PO Amount],
 [Ordered Qty]
  FROM Sales;

TABELA DE LIGAÇÃO ou TABELA DE LINK


LinkTable:
Load DISTINCT
Year & ‘_’ & Month & ‘_’ & Branch & ‘_’ & [Item Number] as SalesKey,
Branch & ‘_’ & [Item Number] as InvKey,
Year & ‘_’ & Month & ‘_’ & Branch & ‘_’ & [Item Number] as POKey,
Year,
Month,
[Branch],
[Item Number]
FROM Sales;

LinkTable:
Load DISTINCT
Null() & ‘_’ & Null() & Branch & ‘_’ & [Item Number] as SalesKey,
Branch & ‘_’ & [Item Number] as InvKey,
Null() & ‘_’ & Null() & Branch & ‘_’ & [Item Number] as POKey,
Null() as Year, Null() as Month,
[Branch],
[Item Number]
FROM Inventory;

LinkTable:
Load DISTINCT
Year & ‘_’ & Month & ‘_’ & Branch & ‘_’ & [Item Number] as SalesKey,
Branch & ‘_’ & [Item Number] as InvKey,
Year & ‘_’ & Month & ‘_’ & Branch & ‘_’ & [Item Number] as POKey,
Year,
Month,
[Branch],
[Item Number]
FROM Purchasing;

Resultado


O que é uma tabela de ligação (link)? 
        É uma tabela que armazena todas as combinações possíveis de valores 
Quando eu uso uma tabela de ligação (link)?
        Quando existe mais do que um campo em comum entre as tabelas. 
Qual é o benefício? 
        Manter a integridade de sua aplicação.







segunda-feira, 16 de setembro de 2013

Modelagem - Referências Circulares

Sempre que uma área é fechada no visualizador de tabelas você vai encontrar uma referência circular, por exemplo, se você tem duas tabelas de fatos que compartilham uma tabela de dimensão comum.

  • Referências circulares são comuns em QlikView, porque você tem apenas um conjunto de relacionamentos por arquivo QlikView.
  • Quando você tem uma referência circular veja se você pode viver sem uma instância do campo que está causando a associação adicional (como um campo duplicado). Se puder, renomeie ou remova.
  • Caso contrário, você pode ter que recorrer a concatenação ou uma tabela de ligação(link table) para remover a referência circular
  • Não se mate com tabelas de ligação, se você não precisa!

Como você pode resolver esta referência circular?


  • Na maioria dos casos depende da regra de negócios
  • Em nosso exemplo, a pergunta a fazer é ainda mais básica:

–É possível a CompanyName apenas ser renomeada para referenciá-la de forma independente, a fim de remover a referência circular?

                                 

Continua...