Как отслеживать изменения в Power BI? - PullRequest
1 голос
/ 19 апреля 2020

Я создаю отчет Power BI с использованием данных с веб-сайта https://www.mohfw.gov.in/, который предоставляет последние данные о вирусах короны для всех индийских штатов / союзных территорий.

Данные представлены в следующем формате -

+-----+-----------------------------+-----------+-------+-------+
| SNo |            State            | Confirmed | Cured | Death |
+-----+-----------------------------+-----------+-------+-------+
|   1 | Andaman and Nicobar Islands |        14 |    11 |     0 |
|   2 | Andhra Pradesh              |       603 |    42 |    15 |
|   3 | Arunachal Pradesh           |         1 |     0 |     0 |
|   4 | Assam                       |        35 |    12 |     1 |
|   5 | Bihar                       |        86 |    37 |     2 |

Каждый день на сайте обновляются новые данные, поэтому нет точного средства отслеживания дат. Я хотел отслеживать дневные изменения (приращения / убывания) в случаях для каждого штата, есть ли способ, которым я могу смоделировать его в Power BI для достижения этого?

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

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

1 Ответ

1 голос
/ 19 апреля 2020

Контекст

, учитывая, что источник данных обновляется в соответствии с SCD 1 (Перезапись). Единственный способ отслеживать изменения по дням - это сбор данных каждый день. На практике запланируйте ежедневную загрузку источника данных и сохраните новые данные на этот день.

Ответ

Вы реализуете SCD 2 (Создать новую запись в изменить) правильно. Важно убедиться, что к каждой записи добавлено техническое поле с отметкой времени, когда она была сгенерирована, чтобы вы могли изучить тренд позже.

Extra

Вы можете в конечном итоге оптимизировать этот подход, нормализуя модель, чтобы уменьшить размер таблицы, к которой вы применяете SCD 2 (Создать новую запись при изменении).

Пожалуйста, позвольте мне привести простой пример. Рассмотрим таблицу с:

  • только 1 запись
  • 1000 полей, из которых только 1 поле (LAST_UPDATE) можно изменить с помощью SCD 2 (Создать новую запись при изменении)

Если LAST_UPDATE изменяется 100 000 раз в день, каждый день запускается создание 100 000 новых версий одной и той же записи (поскольку мы отслеживаем ее изменения). Следовательно, через год в таблице будет еще 1000 полей и 36 500 000 записей. Вместо этого, если мы нормализуем модель таким образом, что поле LAST_UPDATE (с историей SCD 2) будет сохранено в отдельной таблице, через год у нас будет одна таблица с 1 записью и 999 столбцами, а другая таблица с 1 столбцом и 36 500 000 записей.

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

...