6 Replies Latest reply: May 15, 2018 2:02 PM by Sergio Barbosa RSS

    Campos de datas em múltiplas tabelas

    Sergio Barbosa

      Tudo bem?

       

      Tenho três tabelas para carregar no Qlik Sense e poder fazer gráficos tendo como dimensão um campo com Datas.

       

      Cada tabela tem um campo de data com estatísticas de três itens cada. As datas estão no formato YYYY-MM. Mas no arquivo original Excel elas estão na linha de nome dos campos. Ou seja, para criar o campo de data, na hora que vou carregar as tabelas, eu aplico a opção de Girar para que as datas fiquem em apenas uma coluna.

       

      Assim, eu carrego as três tabelas separadamente e giro cada uma para criar uma coluna de datas em cada.

       

      As três tabelas podem ser associadas por um campo com um código. Acontece que eu gostaria de fazer gráficos onde a dimensão fosse a Data. Entretanto, se faço o gráfico e escolho a dimensão de data de uma das tabelas, então as datas das outras tabelas são ignoradas e o gráfico não funciona como eu gostaria.

       

      A questão é, como eu posso fazer gráficos com dimensão de data que possa mostrar dados de duas ou três tabelas simultaneamente?

        • Re: Campos de datas em múltiplas tabelas
          Thiago Justen Teixeira

          Sergio,

           

          Partindo do suposto que você não tenha problema em usar o crosstable, considerando assim que suas tabelas já estejam com as datas em colunas, podes usar o conceito que apliquei no app em anexo. A ideia é usar o Canonical Canlendar.

           

          Funciona bem para o que você precisa.

           

          Abs e Sucesso!!

            • Re: Campos de datas em múltiplas tabelas
              Sergio Barbosa

              Meus dados são carregados de arquivos Excel.

               

              O que você está sugerindo é que eu altere o script de carregamento de dados e insira esse script que você disponibilizou?  (precisa ser editado, correto?)

                • Re: Campos de datas em múltiplas tabelas
                  Thiago Justen Teixeira

                  O app enviado apenas "orienta" a execução do canonical calendar. Mas sua fonte de dados pode continuar a mesma. Veja como ficaria seu caso, por exemplo:

                   

                  // Aqui você carrega as suas três tabelas. As que contém as datas e as concatena.

                  TABELA_A:

                  LOAD

                       SEUS_CAMPOS,

                       DATA_A

                  FROM SEU_EXCEL_A;

                   

                  Concatenate

                  LOAD

                       SEUS_CAMPOS,

                       DATA_B

                  FROM SEU_EXCEL_B;


                  Concatenate

                  LOAD

                       SEUS_CAMPOS,

                       DATA_C

                  FROM SEU_EXCEL_C;

                   

                  // Aqui carrego todos os campos concatenados e crio uma chave que será usada para lincar com a tabela de calendário

                  TABELA_FINAL:

                  LOAD Distinct

                  Autonumber(DATA_A&DATA_B&DATA_C) AS ID_CALENDARIO,

                      *

                  RESIDENT TABELA_A;

                  DROP TABLE TABELA_A;

                   

                  DATA_PONTE:

                  LOAD

                       ID_CALENDARIO,

                      DATA_A AS CanonicalDate,

                      'CAMPO_A' AS DateType

                  RESIDENT TABELA_FINAL;

                  LOAD

                       ID_CALENDARIO,

                      DATA_B AS CanonicalDate,

                      'CAMPO_B' AS DateType

                  RESIDENT TABELA_FINAL;

                  LOAD

                  ID_CALENDARIO,

                      DATA_C AS CanonicalDate,

                      'CAMPO_C' AS DateType

                  RESIDENT TABELA_FINAL;

                     

                  CANONICAL_CALENDAR:

                  LOAD

                       CanonicalDate,

                      year(CanonicalDate) AS CanonicalAno,

                      month(CanonicalDate) AS CanonicalMes

                  RESIDENT DATA_PONTE;

                   

                  Substitua no script acima usando as informações de sua base (nomes de tabelas e campos, por exemplo). Qualquer dificuldade me avise que tento te ajudar.

                   

                  Abs e Sucesso!!

                    • Re: Campos de datas em múltiplas tabelas
                      Sergio Barbosa

                      Uma informação que talvez não tenha dito antes:

                       

                      Tenho 3 tabelas, A, B e C. no caso, eu concatenei as tabelas B e C, mas a tabela A eu prefiro deixá-la separada, pois não tem muito a ver com a B e a C. As três tabelas se comunicam apenas por um campo código e cada uma tem uma tabela de datas.

                       

                      Nesse caso que você explicou, faço do mesmo jeito, exceto que não concateno a primeira vez, correto?

                       

                      Vou tentar aqui e depois posto resultados.

                       

                      Obrigado pelas informações valiosas!

                       

                       

                      EDIT: Não consegui editar o script de forma que a tabela A não seja concatenadas com as tabelas B e C. Pois não sei como seria criada a chave ID_CALENDARIO nesse caso. Você sabe como poderia ser feito?

                        • Re: Campos de datas em múltiplas tabelas
                          Yuri Nicolett

                          Sergio, a maneira mais simples seria concatenar as suas três tabelas, mesmo que os assuntos não sejam os mesmos.

                          Crie um campo de flag, para cada tabela, que identifique a sua origem.

                            • Re: Campos de datas em múltiplas tabelas
                              Sergio Barbosa

                              Eu até tentei concatenar as três tabelas pelo gerenciador do próprio Qlik Sense. Mas não funcionou, houve um erro.

                               

                              Acredito que deva haver um bug nele, pois ao concatenar a terceira tabelas às outras duas (já concatenadas), o Qlik Apresenta um erro no editor de scripts (que é gerado automaticamente).

                               

                              O gerador automático de scripts tá causando um bug, ele cria umas tabelas intermediárias e depois dá um erro dizendo que uma tabelas não foi encontrada. Só pode ser um bug, pois não editei nenhum script, apenas usei a opção de concatenar do gerenciador de dados do Qlik Sense. Não poderia dar esse erro.