7 Replies Latest reply: Apr 24, 2015 7:52 AM by Алекс Зарин RSS

    Операции над двумя списками

      Доброго времени суток.

      Столкнулся с интересным вопросом используя QlikView.

      Существует таблица с выполненными продажами (один столбец) и агентами (два столбца)

      Одну продажу могут совершать один или два агента (один и тот же агент может в разных продажах может быть как в первом так и во втором списке)

      Вопрос: как подсчитать и вывести (в один столбец)  общее количество продаж совершенных каждым агентом?

      Безымянный.jpg

      Проблема вывести их в один столбец, т.к. QlikView воспринимает агентов с одинаковыми фамилиями но в разных столбцах как разных людей.

      Заранее благодарен.

        • Re: Операции над двумя списками
          Eugeny Ilyin

          Если не смущает, что общий итог продаж будет завышен, то можно примерно так:

          Продажи:

          load Агент1 as Агент,  Продажа from ...;

          load Агент2 as Агент,  Продажа from ...;

          • Re: Операции над двумя списками
            Robert Mika

            t1:

            LOAD Agent1 as A,

                      Sales

                

            FROM

            [161489.xlsx]

            (ooxml, embedded labels, table is Sheet1);

            Concatenate

             

             

            CONCATENATE (t1)

            t2:

            LOAD Agent2 as A,

                 Sales

            FROM

            [161489.xlsx]

            (ooxml, embedded labels, table is Sheet1);

             

            2015-04-24 05_45_48-Microsoft Excel - 161489.xlsx.png

            • Re: Операции над двумя списками

              Большое спасибо все прекрасно работает.

              Но есть один нюанс: если я например хочу видеть все продажи по агенту "G" и кликаю на него, но в списке Agent2 из исходной таблицы, то никаких действий в таблице sum(Sales) не происходит их возможно соединить?

                • Re: Операции над двумя списками
                  Robert Mika

                  Попробуйте ,

                  t1:

                  LOAD Agent1 AS Agent,

                        Agent1,

                        Agent2,

                       Sales

                  FROM

                  [..\..\161489.xlsx]

                  (ooxml, embedded labels, table is Sheet1);

                   

                   

                   

                   

                  Concatenate

                   

                   

                  CONCATENATE (t1)

                  t2:

                  LOAD Agent2 as Agent,

                       Sales

                  FROM

                  [..\..\161489.xlsx]

                  (ooxml, embedded labels, table is Sheet1);

                   

                  24-Apr-15 11-35-36 AM.jpg

                   

                   

                   

                   

                  как сможете за- начинают манипулировать таблицы с триггерами , чтобы показать и скрыть ...

                  • Re: Операции над двумя списками
                    Eugeny Ilyin

                    Откройте полученную таблицу (Агент, Продажи) в виде простой таблицы. И тогда можно увидеть, весьма условно на мой взгляд, все продажи по условию фильтра.

                    По сути, мы получили ту же таблицу "Пример", правда с потерей некоторой информации. Но отвечающую на вопрос :"как подсчитать и вывести (в один столбец)  общее количество продаж совершенных каждым агентом?"

                     

                    При этом мы потеряли часть сведений, и не можем ответить на вопросы:

                    - Сколько совместных покупок совершено каждым агентом.

                    - Какие пары самые эффективные в продажах.

                    - Кто чаще играет ведущую роль (Агент1)

                    - Кто чаще выступает в роли второго Агента. (если имеет значение в каком поле ФИО агента)

                    Наверняка, это лишь небольшая часть задачи, которую вы решаете.

                    Здесь следует пошире взглянуть, и оценить целиком имеющиеся данные, вопросы и задачи.

                     

                    А что касается ответа на вопрос, привожу пример:

                     

                    пример:
                    LOAD * , recno() as idRow INLINE [
                        Агент1, Агент2, Продажа
                        A, , 1
                        B, A, 1
                        C, E, 1
                        D, F, 1
                        E, , 1
                        B, G, 1
                        D, B, 1
                    ];
                    
                    АгентПродажа:
                    LOAD idRow, Агент1 As Агент, Продажа As Продажи Resident пример Where len(Агент1)>0;
                    LOAD idRow, Агент2 As Агент, Продажа As Продажи Resident пример Where len(Агент2)>0;
                    
                    

                     

                    В пример мы добавляем ключевое поле idRow - номер строки. В преобразованной таблице мы также используем это поле.
                    В итоге, ядро-Qlik связывает эти таблицы, и выделяя любого агента, происходит фильтрация всех связанных с ним idRow.