Неофициальный форум разработчиков QlikView и Qlik Sense

Форум разработчиков QlikView и Qlik Sense. Получи любые ответы на вопросы по QlikView и Qlik Sense в течении нескольких часов!

Вы не вошли.

Готовые решения на платйорме QlikView

#1 2021-06-28 00:34:14

Rinat
Участник
Зарегистрирован: 2019-08-05
Сообщений: 2
Windows 8Chrome 91.0.4472.101

Резидентная транспонированная загрузка данных

Добрый день, прошу подсказать направление или решение следующей задачи:
Выполняется загрузка первичной таблицы, например, такая структура:
tab1:
Load * Inline [
UID, PlanDate1, PlanDate2, PlanDate3, FactDate1, FactDate2, FactDate3,
1, 01.02.2020, 10.02.2020, 20.02.2020, 01.02.2020, 09.02.2020, 24.02.2020,
2, 08.03.2020, 14.03.2020, 07.04.2020, 02.03.2020, 14.03.2020, null
];
При загрузке получим:
tab1:
|UID| PlanDate1  | PlanDate2 | PlanDate3  | FactDate1 | FactDate2 | FactDate3 |
|1   | 01.02.2020| 10.02.2020| 20.02.2020| 01.02.2020| 09.02.2020| 24.02.2020|
|2   | 08.03.2020| 14.03.2020| 07.04.2020| 02.03.2020| 14.03.2020| null          |

Задача. Реализовать резидентную загрузку из tab1 c формированием плоской таблицы tab2, чтобы получился следующий результат (модель для описания логики транспонирования):
tab2:
| UID| num | name   | PlaneDate  | FactDate  |
| 1   | 10   | "этап1" | PlanDate1 | FactDate1 |
| 1   | 11   | "этап2" | null          | null          |
| 1   | 12   | "этап3" | PlanDate2 | FactDate2 |
| 1   | 13   | "этап4" | PlanDate3 | FactDate3 |

(желаемый результат данных)
tab2:
| UID| num | name   | PlaneDate   | FactDate   |
| 1   | 10   | "этап1" | 01.02.2020 | 01.02.2020|
| 1   | 11   | "этап2" | null           | null           |
| 1   | 12   | "этап3" | 10.02.2020 | 09.02.2020|
| 1   | 13   | "этап4" | 20.02.2020 | 24.02.2020|
| 2   | 10   | "этап1" | 08.03.2020 | 02.03.2020|
| 2   | 11   | "этап2" | null           | null           |
| 2   | 12   | "этап3" | 14.03.2020 | 14.03.2020|
| 2   | 13   | "этап4" | 07.04.2020 | null          |

поле "num" и "name" вводятся вручную (по сути это код и наименование текущего статуса в моей реальной задаче). Как видно из примера, не все статусы могут иметь соответствующие даты и поэтому должны быть заполнены null.
Каким образом прописать код, чтобы при резидентной загрузке к указанным этапам сопоставить плановые и фактические даты и сформировать плоскую таблицу?

Редактировался Rinat (2021-06-28 00:34:59)

Неактивен

Сейчас в этой теме форумчан: 0, гостей: 1
[Bot] CCBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.012 сек, 8 запросов выполнено - Использовано памяти: 1.59 Мбайт (Пик: 1.72 Мбайт) ]