Модель измерения (рекурсивная/иерархическая) для хранилища данных

У меня возникли трудности с подключением таблицы измерений (рекурсивной/иерархической) к таблице фактов, поскольку есть проблемы/проблемы, с которыми необходимо справиться:

  • Таблица измерений принадлежит структуре отношений родитель-потомок
  • Из исходной таблицы он продолжает расти
id item_name parent_id
1 classification null
2 category null
3 group null
4 modern 1
5 modified 1
6 tools 2
7 meters 2
8 metal 3
9 plastic 3
10 lead 8
11 alloy 8

Денормализация таблицы такого типа не подходит, так как появляется новый тип объекта, это повлияет на структуру измерения.

Каков наилучший подход к этому типу? Пожалуйста, приведите пример и какой будет оператор запроса после соединения факта и измерения.


comment
Вам нужно решить, нужна ли вам простая таблица измерений, обладающая всеми преимуществами простоты, но без возможности обработки бесконечной иерархии. Первый вопрос: что хочет видеть конечный пользователь и что поддерживает инструмент отчетности? Типичное решение этой проблемы состоит в том, чтобы признать, что на самом деле будет конечное число уровней, т. е. 30, и создать 30 столбцов для хранения этого уровня.   -  person Nick.McDermaid    schedule 24.04.2021
comment
Привет, @Nick.McDermaid. Сверяясь с пользователями, им необходимо включить эти элементы для фильтрации и группировки. Инструмент отчетности должен использоваться либо PowerBI, либо Kibana.   -  person zysirhc    schedule 24.04.2021
comment
Я предлагаю вам сначала использовать запрос здесь, чтобы найти фактическую глубину этой таблицы. stackoverflow.com/questions/2199942 /   -  person Nick.McDermaid    schedule 24.04.2021
comment
Это очень похоже на модель EAV, которая отлично подходит для приложения, но раздражает для отчетов. Другой вопрос для анализа: сколько существует различных записей без родителей. и как часто они меняются?   -  person Nick.McDermaid    schedule 24.04.2021
comment
Прямо сейчас у него 60 записей без родителей. Изменение или добавление группы товаров занимает примерно 2-3 месяца.   -  person zysirhc    schedule 24.04.2021
comment
60 записей без родителей будут означать, что глубина всего одна... у ваших выборочных данных глубина три. Вы можете опубликовать фактические данные в таблице?   -  person Nick.McDermaid    schedule 24.04.2021
comment
Я не могу публиковать фактические записи пользователей. Если в отношении перестановки/уровня max (дочерний) равен 3, общим является уровень 2.   -  person zysirhc    schedule 24.04.2021
comment
Может быть, это может помочь - datamartist.com/data-modelling- как создать измерение Первоначально вы можете учитывать 3 уровня, а если добавится 4-й уровень, вы можете добавить его как столбец измерения.   -  person CleanBold    schedule 24.04.2021
comment
Если ваша иерархия относительно проста (например, максимум 3-4 уровня без пропусков), то вы обычно можете встроить ее в стандартное измерение (столбцы oarent, grandparent, grandparent). Если иерархия более сложная (неизвестное количество уровней, неравномерная иерархия и т. д.), то дизайн обычно определяется требованиями используемого вами инструмента бизнес-аналитики и тем, что ему нужно для навигации по иерархии; это часто означает создание вспомогательных таблиц   -  person NickW    schedule 25.04.2021