8 Replies Latest reply: Jan 31, 2017 4:01 AM by Сергей Копысов RSS

    Дата и данные в одном поле

    Сергей Копысов

      Всем привет. Я только начинаю разбираться с QlikView. Помогите пожалуйста решить проблему.

      Я загрузил в скрипте таблицу которая имеет следующий вид (примерные данные):

      РесторанВыручка
      Январь 201730
      Ресторан 110
      Ресторан 220
      Февраль 201740
      Ресторан 125
      Ресторан 215
      Март 201727
      Ресторан 112
      Ресторан 215
      ......

      А нужно сделать так:

      ДатаРесторанВыручка
      01.01.2017Январь 201730
      01.01.2017Ресторан 110
      01.01.2017Ресторан 220
      01.02.2017Февраль 201740
      01.02.2017Ресторан 125
      01.02.2017Ресторан 215
      01.03.2017Март 201727
      01.03.2017Ресторан 112
      01.03.2017Ресторан 215
      .........

      Смысл в том чтобы разбить таблицу по месяцам с соответствующими в них ресторанами.

      Заранее благодарю за любую помощь.

        • Re: Дата и данные в одном поле
          Andrey Khoronenko

          Сергей, доброе утро!

           

          Первая таблица совпадает с исходными данными? Если нет, можно представить фрагмент исходных данных?

           

          С уважением,

          Андрей

            • Re: Дата и данные в одном поле
              Сергей Копысов

              С добрым утром! Спасибо что откликнулись. Нет первая таблица не совпадает. Исходные данные я не могу показать. Конфиденциально. Но принцип тот же. Различие лишь в том что ресторанов там гораздо больше, и выручка другая, строки с месяцем/годом совпадают. Мне нужно протянуть дату по всем строкам соответственно месяцу и его ресторанам.

                • Re: Дата и данные в одном поле
                  Andrey Khoronenko

                  Сергей, добрый день!

                   

                  Вы уж меня извините меня за мои сомнения, пожалуйста, но смущает необходимость загрузки разнородных данных (дат и названий ресторанов) в одно поле "Ресторан" . Кроме того, сводные данные (месячные итоги) обычно формируются впоследствии после загрузки скрипта при построении диаграмм. Нет, в принципе все это сделать можно и в скрипте, но такой подход несколько расходится с общепринятой практикой применения QlikView/Qlik Sense.

                  Все таки анализ небольшого фрагмента исходных данных и кода Вашего скрипта позволил бы правильнее ответить на Ваш вопрос.

                   

                  С уважением

                  Андрей

                    • Re: Дата и данные в одном поле
                      Сергей Копысов

                      Спасибо вам за заинтересованность. Да я всё понимаю. Дело в том что изначально данные формирует сотрудница из 1C в xls (и по другому никак). Из которого я затем забираю данные (к сожалению иначе пока не умеем). Получается огромная таблица (годовой план) где все двенадцать месяцев чередуются со списком ресторанов в одной строке. Это я её (таблицу) потом транспонировал скриптом для удобства (результат: все в одном поле). Понимаю что это не комильфо, но если у вас есть какие либо варианты решения не могли бы вы поделиться?

                • Re: Дата и данные в одном поле
                  Anna Klimkova

                  Сергей,

                  вы можете это сделать с помощью мастера трансформации при добавлении xls файла в скрипт.

                  При добавлении файла в Мастере создания файла вместо кнопки "Готово", выберите "Далее" и затем "Вкл. Шаг трансформации".  Все ваши действие здесь будут описаны функциями и добавятся в скрипт загрузки таблицы.

                  На вкладке Столбцы создайте новый столбец на основании столбца с месяцами.

                  Add column1.png

                  Условием на заполнение ячеек нового столбца можно указать, "оканчивается на 2017" или содержит 201, если у вас есть разные года.

                  Add column2.png

                   

                  Затем на вкладке "Заполнить" дозаполните пустые строки нового столбца на основании значений сверху. В поле "Целевой" укажите номер вашего нового столбца.

                   

                  Fill column1.png

                   

                  Затем можно на вкладке "Мусор" - Удаление по условиям ( или уже без Мастера в скрипте) избавиться от лишних строк с месяцем.

                  Delete rows.png

                   

                  В конце скрипта загрузки вашей таблицы добавится несколько функций преобразования

                  например:

                  (ooxml, embedded labels, table is Sheet1, filters(

                  ColXtr(5, RowCnd(CellValue, 5, StrCnd(end, '16')), 0),

                  Replace(15, top, StrCnd(null))

                  ));

                   

                   

                  Данный способ преобразований нередко приходится применять в случае большого количества накопленных отчетов Excel, созданных по одному шаблону, например, когда одно из полей содержит сразу несколько уровней иерархии. И нужно эту иерархию восстановить, создав столбцы для каждого уровня.