7 Replies Latest reply: Mar 12, 2012 4:21 PM by rodrigo silvestre RSS

    Ajuda referência circular

    rodrigo silvestre

      Boa tarde,

       

      tenho 3 tabelas ligadas pelo campo cod_prod , e cada tabela tem um campo data diferente ( data de venda, data do custo , data custo materia prima)...

       

      preciso relacionar essas tabelas pelo cod_prod e pela data, criando um calendario para as 3 datas, o problema é que nao consigo fazer isso sem dar referência circular....

       

      alguem tem alguma dica ...

       

      segue em anexo o print do visualizador de tabelas para ficar mais facil de compreender.

        • Ajuda referência circular
          fabio cabral

          olá,
          vc pode colocar as data em uma mesma tabela para evitar a referencia circular a fazer o filtro para o calendario... vai ficar +ou- dessa forma:

           

          LinkTable:

          load

               cod_prod,

               dt_mp_custo as data

          resident mp;

           

          add load

               cod_prod,

               dt_venda_prod as data

          resident venda;

           

          add load

               cod_prod,

               dt_prod_custo as data

          resident prod;

          • Ajuda referência circular
            Claudimar Andreazza

            Bom dia Rodrigo,

             

            lembre que o melhor modelo para se trabalhar com o Qlikview é o modelo estrela (cria-se uma tabela fato e apenas liga-se a fato tabelas auxiliares). Recomendaria a você fazer o seguinte:

             

            1) faça um left join de venda_prod com venda_produto

            2) faça um left join de mp com materia_prima

            3) faça um left join de prod com produto

            4) concatene tudo isso

            5) crie seu calendario e ligue na tabela fato.

             

            T+

            • Re: Ajuda referência circular

              Cara,

              Se a quantidade de tabelas que usem o caledário for pequeno, você também pode criar um calendário para cada uma das tabelas.

               

              Cria uma aba separada para os calendário no script (fica mais fácil de gerenciar separando uma aba só pros calendários) e põe teus calendarios lá.

              Em Vários casos específicos isso tem me ajudado.

               

              Tenho um Exemplo que utilizei e deu muito certo. Talvez possa te ajudar.

              Foi um caso de três tabelas que usavam calendário. A tabela de "Ordem_de_Serviço", "Parcelamento" e "Pagamento".

               

              Exemplo Abaixo:

               

              Calendario_Geração_OS:
              LOAD date(ORSE_TMGERACAO_DATA)                                          as ORSE_TMGERACAO_DATA,
                        Month(ORSE_TMGERACAO_DATA)                                      as Mês_Geração_OS,
                        Year(ORSE_TMGERACAO_DATA)                                         as Ano_Geração_OS,
                        Day(ORSE_TMGERACAO_DATA)                                          as Dia_Geração_OS,
                        Date(MonthStart(ORSE_TMGERACAO_DATA),'MMM/YYYY')  as [Mês/Ano_Geração_OS],
                        Week(ORSE_TMGERACAO_DATA)                                       as Semana_Geração_OS
              Resident [Ordem_de_Serviço];

               

              CalendarioPARC:
              LOAD  date(PARC_TMPARCELAMENTO_DATA)       as PARC_TMPARCELAMENTO_DATA,
                        Month(PARC_TMPARCELAMENTO_DATA)       as Mês_PARC,
                        Year(PARC_TMPARCELAMENTO_DATA)        as Ano_PARC,
                        Day(PARC_TMPARCELAMENTO_DATA)        as Dia_PARC,
                        Date(MonthStart(PARC_TMPARCELAMENTO_DATA),'MMM/YYYY') as [Mês/Ano_PARC],
                        Week(PARC_TMPARCELAMENTO_DATA)        as Semana_PARC
              Resident [Parcelamento];


              Calendario_Pagamento:
              LOAD date([Data do Pagamento])       as [Data do Pagamento],
                       Month([Data do Pagamento])        as Mês_do_Pagamento,
                       Year([Data do Pagamento])        as Ano_do_Pagamento,
                        Day([Data do Pagamento])        as Dia_do_Pagamento,
                        Date(MonthStart([Data do Pagamento]),'MMM/YYYY') as [MêsStart/Ano_Pagamento],
                        Date(MonthEnd([Data do Pagamento]),'MMM/YYYY')  as [MêsEnd/Ano_Pagamento],
                        Week([Data do Pagamento])        as Semana_do_Pagamento
              Resident [Pagamento];

               

               

               

              • Re: Ajuda referência circular
                Cesar Accardi

                Olá Rodrigo, segue em anexo exemplo usando ilha de datas. No exemplo eu tenho uma tabela com títulos, filtrando o calendário eu consigo saber quantos títulos foram emitidos, venceram e foram recebidos no mês selecionado sem a existência de relação lógica entre as tabelas.

                 

                Abraços.

                  • Re: Ajuda referência circular
                    rodrigo silvestre

                    Obrigado pela ajuda de todos, tentei de várias formas colocadas aqui, porém acontecia sempre o mesmo problema, quando eu ligava os calendários pelo cod_prod os valores não batiam, e quando eu tentava ligar pelas datas dava referência circular.

                     

                    A melhor solução foi usando ilhas de datas... essa função InMonth() eu não conhecia, e com o exemplo do Cesar ficou bem claro como utiliza-la.

                     

                     

                    Mais uma vez, obrigado pela ajuda de todos