Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
neftekos
Contributor II
Contributor II

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

Всем привет. Я только начинаю разбираться с 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
.........

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

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

1 Solution

Accepted Solutions
Anna_Klimkova
Employee
Employee

Сергей,

вы можете это сделать с помощью мастера трансформации при добавлении 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, созданных по одному шаблону, например, когда одно из полей содержит сразу несколько уровней иерархии. И нужно эту иерархию восстановить, создав столбцы для каждого уровня.

View solution in original post

7 Replies
ahaahaaha
Partner - Master
Partner - Master

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

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

С уважением,

Андрей

neftekos
Contributor II
Contributor II
Author

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

ahaahaaha
Partner - Master
Partner - Master

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

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

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

С уважением

Андрей

neftekos
Contributor II
Contributor II
Author

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

neftekos
Contributor II
Contributor II
Author

В общем, проще говоря, надо как-то указать системе что "от сих до сих"- Январь, а от сих до сих - Февраль и т.д.

Anna_Klimkova
Employee
Employee

Сергей,

вы можете это сделать с помощью мастера трансформации при добавлении 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, созданных по одному шаблону, например, когда одно из полей содержит сразу несколько уровней иерархии. И нужно эту иерархию восстановить, создав столбцы для каждого уровня.

neftekos
Contributor II
Contributor II
Author

Работает! Спасибо вам огромное и всего наилучшего!