domingo, 6 de fevereiro de 2011

Load sobre o Load

Load sobre o load é um recurso muito útil para criar campos que dependem um alguma transformação. No exemplo abaixo demonstramos a criação de uma tabela de calendário com base em um uma data inicial e o dia final do mês atual, essas data são alimentadas em variáveis.

Definindo valores as Variáveis.

LET vMesInicial = Date('01/01/2006');
LET vMesFinal = Date(MonthEnd(Today()));

Criação da tabela Calendário utilizando o comando Autogenerate(), onde a quantidades de linhas é a diferença entre as variáveis criadas anteriormente.

CALENDARIO:
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];
LOAD
Date(MonthEnd(Today())- Recno()+1,'DD/MM/YYYY') as [Data]
AUTOGENERATE(vMesFinal-vMesInicial+1);

15 comentários:

  1. Muito bom o seu site, estou a procura de tutoriais para utilização do QlikView desde o load de dados, construção de dashboards. Você poderia publicar um mini curso para iniciantes, seria um trabalho bem interessante.

    ResponderExcluir
    Respostas
    1. Olá,
      Exite o tutorial da própria QlikTech que mostra tudo isso.

      Abraços
      Tonial.

      Excluir
  2. Boa tarde!!!

    Estou com uma dúvida e não consegui resolver:
    Eu consigo utilizar um load sobre load e formatar um campo como abaixo:
    9999.9999.9999.1234
    ****.****.****.1234

    O campo é o número de um cartão de crédito e devem aparecer somente os último 4 carasteres numa tabela.

    Att.
    Rebeca

    ResponderExcluir
    Respostas
    1. Olá Rebeca,

      Acredito que vc possa fazer a concatenação do texto '****.****.****.' com o últimos 4 dígitos do cartão fazendo assim:

      Dados:
      LOAD
      '****.****.****.'&Right(NroCartao,4) as NroCartaoOculto;
      LOAD * INLINE [
      NroCartao
      9999.9999.9999.1234
      ];

      Abraços
      Tonial

      Excluir
  3. como criar um calendario maestro em um banco de dados formato sql, que publicou tentei usar e não funcionou, devo criar as tabelas pafa cada um deles no excel e depois conclui a carga de dados, podem me ajuda urgente. muito obrigado amigos

    ResponderExcluir
  4. preciso de ajuda, trabalho em uma banco de dados, consegui vincular o calendário aos demais campos, porém ao chamar a dimensão trimestre, do ano de 2013, não não vem nada, os campos de datas foram criados com a hora do lado tentei trazer para o execel e modifica-los para que fiquem igual aos campos que já existia não deu certo, alguém pode me ajuda

    ResponderExcluir
  5. Internautas me ajudem, como criar um calendário mestre em um banco de dados já existente????, tentei usar o o que o Fernando indicou, sem sucesso, os campos no banco de dados foram criados em sql, como posso fazer para unir estes campos, e ao chamar o campo trimestre trazer o que preciso, neste banco de dados possui apenas pagamentos , os campos datas são: data pagamento, mês pagamento, ano pagamento, como fazer para vincular estes campos ao calendario e quais as expressões que devo usar para chamar o trimestre por exemplo,por favor FERNANDO, alguém que saiba muito de qlikview me ajudem,preciso desta informação ainda no mês de Novembro para o trabalho que estrou desenvolvendo na empresa que trabalho, por favor me ajudem

    ResponderExcluir
  6. Olá Luciana, o problema que esta ocorrendo é devido ao campo de seu banco de dados vir com a hora junto, para solucionar o problema você pode utilizar a função floor() do QlikView para pegar apenas o valor inteiro da data. Outra solução é voce fazer a leitura dos dados de sua tabela de forma resident e depois criar os campos do calendario que você necessita.
    Ex.
    CALENDARIO:
    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 SuaTabela;

    ResponderExcluir
  7. Fernando, poderia me ajuda, os meses no foram criados em formato numerico, ao puxar os meses ao ínves devir jan/fev/março/abril etc..., vem 1/2/3/4, pode me ajudar a transforma os meses em formato numericos em formatos de jan,fev,março,abril.

    ResponderExcluir
  8. FERNANDO, ao ínves de utilizar o camando LOAD
    Date(MonthEnd(Today())- Recno()+1,'DD/MM/YYYY') as [Data]
    AUTOGENERATE(vMesFinal-vMesInicial+1); utilizarei Resident SuaTabela;- assim o calendario será vinculado automaticamente com os demais campos existente e isso, por favor me ajuda, preciso muito criar este calendario, preciso trazer os trimestre e meta na minha empresa sem a sua ajuda não vou conseguir.

    ResponderExcluir
  9. Fernando, não entendi muito bem como fazer para chamar os trimestre, o campo data, foi vinculado ao campo Data Pagamento, este e apenas um dos campos, o que preciso fazer e informar um uma tabela o trimestre 30,60,90 e180 dias, o script foi criado em formato SQL, de um banco de dados, pode me ajudar quais as funções que posso usar para chamar na dimensão o trimestre os valor pago, me ajude por favor.

    ResponderExcluir
  10. amigos, alguém sabe como fazer para modificar os meses em números, para meses por nome ex: janeiro,fevereiro.........., em um banco de dados,o script foi criado todo em sql,sou usúaria nova do sistema Qlikview, podem me ajudar....

    ResponderExcluir
    Respostas
    1. Olá Luciana, para transformar o valor de texto para numérico, você pode utilizar uma tabela de mapping, e depois utilizar a função ApplyMap() para fazer o De-Para dos Mês.
      MAP_MESES:
      Mapping
      LOAD * InLine [
      De, Para
      Janeiro, 1
      Fevereiro, 2
      .
      .
      ];

      Faça esse Load e depois utilize o ApplyMap().

      Excluir
  11. Bom dia!

    Estou fazendo o load utilizando o ODBC para uma tabela mas temos registro de 2007 ate a data de hoje. Como faço para buscar somente os registro maior que 2014, ou delimitar por mês >= mês janeiro.

    ResponderExcluir
    Respostas
    1. Olá Davidson, isso depende do banco de dados que você possui.
      Mas via de regra basta fazer a condição no SQL.
      SQL Select * From Tabela Where To_Date(Data,'YYYY') >=2014;

      Excluir