Поворот данных осмысленно - PullRequest
1 голос
/ 03 апреля 2020

SQL Server 2016

Мне дали интересную структуру таблиц, и меня попросили составить несколько значимых отчетов об этом, чтобы увидеть изменения роста, и мне нужна помощь в том, как go о повороте данных для набора результатов, с которым будет проще работать в SSRS.

Структура таблицы:

CREATE TABLE [dbo].[Person_Order_ETL_Delay](
       [ID] [int] IDENTITY(1,1) NOT NULL,
       [Person_Name] [varchar](255) NULL,
       [Order_DATE] [date] NOT NULL,
       [Order_INTERVAL] [char](5) NOT NULL,
       [00:00-00:30] [int] NOT NULL,
       [00:30-01:00] [int] NOT NULL,
       [01:00-01:30] [int] NOT NULL,
       [01:30-02:00] [int] NOT NULL,
       [02:00-02:30] [int] NOT NULL,
       [02:30-03:00] [int] NOT NULL,
       [03:00-03:30] [int] NOT NULL,
       [03:30-04:00] [int] NOT NULL,
       [04:00-04:30] [int] NOT NULL,
       [04:30-05:00] [int] NOT NULL,
       [05:00-05:30] [int] NOT NULL,
       [05:30-06:00] [int] NOT NULL,
       [06:00-06:30] [int] NOT NULL,
       [06:30-07:00] [int] NOT NULL,
       [07:00-07:30] [int] NOT NULL,
       [07:30-08:00] [int] NOT NULL,
       [08:00-08:30] [int] NOT NULL,
       [08:30-09:00] [int] NOT NULL,
       [09:00-09:30] [int] NOT NULL,
       [09:30-10:00] [int] NOT NULL,
       [10:00-10:30] [int] NOT NULL,
       [10:30-11:00] [int] NOT NULL,
       [11:00-11:30] [int] NOT NULL,
       [11:30-12:00] [int] NOT NULL,
       [12:00-12:30] [int] NOT NULL,
       [12:30-13:00] [int] NOT NULL,
       [13:00-13:30] [int] NOT NULL,
       [13:30-14:00] [int] NOT NULL,
       [14:00-14:30] [int] NOT NULL,
       [14:30-15:00] [int] NOT NULL,
       [15:00-15:30] [int] NOT NULL,
       [15:30-16:00] [int] NOT NULL,
       [16:00-16:30] [int] NOT NULL,
       [16:30-17:00] [int] NOT NULL,
       [17:00-17:30] [int] NOT NULL,
       [17:30-18:00] [int] NOT NULL,
       [18:00-18:30] [int] NOT NULL,
       [18:30-19:00] [int] NOT NULL,
       [19:00-19:30] [int] NOT NULL,
       [19:30-20:00] [int] NOT NULL,
       [20:00-20:30] [int] NOT NULL,
       [20:30-21:00] [int] NOT NULL,
       [21:00-21:30] [int] NOT NULL,
       [21:30-22:00] [int] NOT NULL,
       [22:00-22:30] [int] NOT NULL,
       [22:30-23:00] [int] NOT NULL,
       [23:00-23:30] [int] NOT NULL,
       [23:30-00:00] [int] NOT NULL
) ON [PRIMARY]
GO

Таблица logi c: эта таблица будет отображать активность ETL целевого приложения по сравнению с наличие в исходном приложении.

enter image description here

Давайте возьмем ID = 12 в качестве примера. 01.04.2020 исходное приложение принимает заказы Бильбо и обрабатывает их с интервалом заказа 05:30 (системное время [Order_INTERVAL]), и мы видим, что данные были сделаны доступными для целевого приложения отчетности (через Отметки времени ETL) между [06: 00-06: 30] (6 томов, наконец, могут быть захвачены) и [06: 30-07: 00] (еще 3 тома обработаны и доступны для ETL).

Таким образом, у нас есть источник для целевой задержки.

Системный интервал присвоил эти объемы (6 + 3 = 9 общих заказов) для интервала времени 05:30, однако целевой системе не удалось захватить их до интервала 06:00 и остатка с интервалом 06:30 для целевого приложения создания отчетов.

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

Я хотел бы получить набор результатов из этого, чтобы представить данные, подобные следующим:

enter image description here

Поворот соответствующих данных интервала ETL, отображающих объем и процентное отношение к общему объему. Соответствующее значение, пол тома должен быть интервалом исходного приложения для тома, а потолок будет последним интервалом ETL в серии, который содержит том больше 0.

Любая помощь в этом будет выдающийся.

1 Ответ

2 голосов
/ 04 апреля 2020

Для этого вам нужно unpivot.

см. Пример db <> fiddle здесь .

Result_snip:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...