Предисловие На этот раз я хочу поговорить о чем-то кроме технологии работы.,DWD Этот уровень упоминался много раз при написании уровня CDM.,Предложение, которое недавно заставило меня осознать это, — это предложение: «Я лучше совершу ошибку, чем ничего не сделаю».,Если ты можешь сказать это,,Тогда способность исполнения намного превосходит другие,Способности и видение также будут полностью развиты с опытом. Но для этого также необходимо различать поля.,Вообще говоря, я думаю, что степень применимости этого предложения находится в моей собственной технической сфере деятельности.,Вы можете попробовать другую технологию,Смените тему или начните новую вторую карьеру,Вместо того, чтобы совершать ошибки в нынешних условиях,Потому что сейчас у тебя очень мало возможностей совершать ошибки.,Все равно придется во всем обращать внимание на количество и меру. Ладно, больше никаких глупостей.,Теперь приступим к моделированию данных слоя DWD.
Слой детальных фактов (DWD)существоватьхранилище данные — очень важный уровень, и его проектирование тесно связано с бизнес-процессом предприятия. Благодаря характеристикам и методам проектирования уровня понимания DWD можно лучше поддерживать анализ предприятия. данныхнуждаться。
моделирование на основе бизнес-процессов:
Широкая обработка таблиц:
Давайте рассмотрим бизнес-кейс в качестве примера. Во время процесса торгов моделирование слоев DWD может помочь компаниям глубоко проанализировать и оптимизировать свою деятельность по проведению торгов:
Типичный процесс торгов включает в себя следующие основные этапы:
Дизайн таблицы фактов:
структура таблицы фактов:
Идентификатор предложения | Идентификатор проекта | Идентификатор поставщика | Дата подачи | Дата оценки предложения | Дата выигрыша торгов | Сумма ставки | Идентификатор статуса |
---|---|---|---|---|---|---|---|
мера:
Реализуйте соответствующую избыточность в таблице фактов, чтобы уменьшить количество связанных запросов и повысить эффективность запросов. Например, храните некоторые важные атрибуты поставщиков и проектов непосредственно в таблице фактов.
Широкая обработка таблицпозжеструктура таблицы фактов:
Идентификатор предложения | Идентификатор проекта | Название проекта | Идентификатор поставщика | Имя поставщика | Дата подачи | Дата оценки предложения | Дата выигрыша торгов | Сумма ставки | Идентификатор статуса |
---|---|---|---|---|---|---|---|---|---|
В сфере назначения ставок мы можем определить степень детализации посредством комбинации нескольких атрибутов измерений. Например, каждая запись ставки может иметь степень детализации, определяемую комбинацией следующих атрибутов измерения:
Такое детальное определение гарантирует, что каждая запись представляет заявку конкретного поставщика на проект.
С точки зрения бизнеса каждая запись представляет собой конкретную бизнес-деятельность, то есть заявку поставщика на проект. Это детальное определение, ориентированное на бизнес, помогает напрямую отражать фактические транзакционные действия в бизнес-процессе.
В процессе торгов разные данные метрик могут принадлежать разным типам фактов:
При разработке таблицы фактов некоторая информация об измерениях может храниться непосредственно в таблице фактов в виде вырожденных измерений, чтобы повысить эффективность запросов. Например:
Вырожденная размерная структура таблицы фактов:
Идентификатор предложения | Идентификатор проекта | Название проекта | Идентификатор поставщика | Имя поставщика | Дата тендера | Сумма ставки | Статус ставки |
---|---|---|---|---|---|---|---|
Благодаря такой конструкции, когда пользователи запрашивают все записи торгов определенного поставщика, они могут быстро получить соответствующую информацию непосредственно через поле вырожденного измерения без необходимости выполнять сложные связанные запросы к таблице измерений. Такая конструкция может значительно повысить производительность запросов, особенно при обработке больших объемов данных.
В тендерном бизнесе мы можем определить Слой в соответствии с различными потребностями бизнеса. детальных фактов (DWD) тип для удовлетворения потребностей анализа Различные требования к данным.
определение:
Пример:
В тендерном бизнесе таблица фактов транзакций может записывать каждое предложение от каждого поставщика для каждого проекта. Структура таблицы может включать в себя следующие поля:
Идентификатор предложения | Идентификатор проекта | Идентификатор поставщика | Дата тендера | Сумма ставки | Статус ставки | Дата оценки предложения | Дата выигрыша торгов |
---|---|---|---|---|---|---|---|
Сценарии применения:
определение:
Пример:
в тендерном бизнесе,Статус ставок и суммы по всем предметам можно записывать ежемесячно,контролироватьпроектпрогресси Динамика рынка。поверхность Структура может включать в себя:
месяц | Идентификатор проекта | общий Сумма ставки | Количество ставок | Количество выигравших ставок | средний Сумма ставки |
---|---|---|---|---|---|
Сценарии применения:
определение:
Пример:
В тендерном бизнесе сводную таблицу фактов можно использовать для отслеживания всего процесса каждого проекта, включая ключевые этапы от публикации объявления о торгах до подписания контракта. Структуры таблиц могут включать в себя:
Идентификатор проекта | Дата объявления | Дата начала ставки | Дата окончания предложения | Дата оценки предложения | Дата выигрыша торгов | дата подписания контракта | общая сумма ставки |
---|---|---|---|---|---|---|---|
Сценарии применения:
Общий процесс разработки подробной таблицы фактов детализации показан на рисунке ниже:
Бизнес-процесс транзакции и его измерение были определены в измерении согласованности. Подробные таблицы фактов уделяют внимание разработке моделей бизнес-процессов. Построение подробной таблицы фактов можно разделить на четыре этапа: выбор бизнес-процессов, определение детализации, выбор измерений и определение фактов (измерений). Детализация в основном фиксирует семантическое описание бизнес-деятельности без расширения измерений. При построении подробной таблицы фактов вам необходимо выбрать разработку подробных данных слоя на основе существующей таблицы и знать, какая степень детализации данных хранится в записях построенной таблицы.
При разработке подробной таблицы фактов в сфере торгов следование следующим принципам может гарантировать, что модель данных сможет эффективно поддерживать потребности бизнеса и оптимизировать эффективность анализа данных. Эти принципы проектирования подробно описаны ниже и объяснены в связи с тендерным бизнесом:
понимать:каждая детальдетализацияфактповерхность Следует сосредоточиться на основном бизнес-мероприятии,Обычно связывается только одно ключевое измерение.
Применение в тендерном бизнесе:Например,Тендерный стол фактов транзакций Может仅иРазмеры проектаассоциация,Потому что каждая запись о торгах в основном вращается вокруг конкретного проекта. Другие параметры (например, поставщики, время) как вспомогательное измерение.
понимать:фактповерхность Бизнес-процесс должен быть отражен максимально полносерединаизвсе重要数据,Для поддержки разнообразных потребностей анализа.
Применение в тендерном бизнесе:нежныйтаблица фактов транзакций должны включать все меры, относящиеся к предложению, например сумму ставки、Количество ставок、Статус ставки и т. д. для всестороннего анализа.
понимать:Выбирайте только те прямыеисвязанные с бизнес-процессомизмераисвойство,Избегайте включения нерелевантных данных.
Применение в тендерном бизнесе:фактповерхностьсередина Только держиинежныйдеятельность, непосредственно связанная сизфакт,нравитьсяСумма ставкииСтатус выигрышной ставки,а не другую нерелевантную информацию,Например, данные финансовой отчетности поставщика.
понимать:нельзя добавить напрямуюизфакт,Постарайтесь разбить его на составляющие, которые можно обобщить.,чтобы облегчить анализ.
Применение в тендерном бизнесе:ВоляДоля успешных ставокавариядляуспех Количество ставокиобщий Количество ставок,这样Можетпроходитьэти двое Факт аддитивность рассчитывает вероятность успеха.
понимать:明确фактповерхностьиздетализациячтобы гарантировать данныеизуникальностьичестность,Не допускайте смешивания разных фактов.
Применение в тендерном бизнесе:существоватьсоздаватьнежныйтаблица фактов транзакций До,Заявить о своей детализации как «единая заявка от поставщика для каждого проекта».,Убедитесь, что уровень детализации, записанный в таблице, соответствует.
понимать:保持фактповерхностьиздетализацияпоследовательный,во избежание путаницы данных и ошибок анализа.
Применение в тендерном бизнесе:убеждатьсянежныйтаблица фактов транзакцийсерединавсе记录издетализацияпоследовательный,Например, каждая запись представляет собой определенное событие торгов.,а не несколько записей, представляющих одну ставку,некоторые поколенияповерхностьпроектобщий。
понимать:убеждатьсяфактповерхностьсерединаизвсемераиспользоватьпоследовательныйизединица,избегатьсуществоватьанализ При данных произошло недоразумение или ошибка.
Применение в тендерном бизнесе:убеждатьсявсеи Сумма, связаннаяизмера(нравиться Сумма ставка, сумма бюджета) используют одну и ту же денежную единицу.
понимать:иметь дело сNullНужно быть осторожным при оценке,чтобы избежать проблем при расчете и анализе данных.
Применение в тендерном бизнесе:существоватьнежныйтаблица фактов В транзакциях для полей, где могут появляться значения Null (например, Дата оценки предложения),Может обрабатываться с использованием значений по умолчанию или аннотаций,обеспечить точность результатов анализа.
понимать:Вырожденные размеры сохраняются напрямуюсуществоватьфактповерхностьсерединаиз Размерыинформация,Может ускорить запросы и упростить модели данных.
Применение в тендерном бизнесе:ВоляНазвание проектаиИмя поставщикаделатьдля退化Размеры存储существоватьнежныйтаблица фактов транзакцийсередина,Это устраняет необходимость часто связывать таблицы измерений во время запросов.,Повышение эффективности запросов.
Следуя этим принципам проектирования, можно создать эффективную и простую в использовании детальную таблицу фактов в тендерном бизнесе, что поможет компаниям лучше анализировать и оптимизировать свою тендерную деятельность.
иерархия модели | Соглашение об именовании таблиц | Примеры показывают | Описание таблицы экземпляров |
---|---|---|---|
dwd | dwd_subject домен_необязательный предмет_факты, связанные с таблицей описаний_частота обработки + метод извлечения | dwd_par_trader_detail_df | dwdдляиерархия модели、par — доменное имя субъекта、trader — название темы торговца、деталь — это описание таблицы、d представляет частоту обработки、f представляет метод полного извлечения |
Например: dwd_asale_trd_ordcrt_trip_di (таблица фактов заказа авиабилетов компании электронной коммерции, ежедневное обновление) и dwd_asale_itm_item_df (таблица фактов снимка продукта электронной коммерции, полная сумма ежедневного обновления).
Идентификатор заказа | Идентификатор проекта | Название проекта | Идентификатор поставщика | Имя поставщика | Дата подачи | Дата рассмотрения | Дата утверждения | Сумма заказа | Количество продукта | Сумма скидки | налоги | Статус заказа |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Детали дизайна:
При реализации таблицы фактов транзакции отправки заказов в бизнес-домене назначения ставок нам необходимо написать операторы создания таблицы SQL и определить направление потока данных, процессы загрузки в первый день и ежедневную загрузку.
Таблица фактов транзакции подачи заказа:
CREATE TABLE order_submission_facts (
order_id INT PRIMARY KEY,
project_id INT,
project_name VARCHAR(255),
supplier_id INT,
supplier_name VARCHAR(255),
submission_date DATE,
review_date DATE,
approval_date DATE,
order_amount DECIMAL(18, 2),
product_quantity INT,
discount_amount DECIMAL(18, 2),
tax_amount DECIMAL(18, 2),
order_status VARCHAR(50),
FOREIGN KEY (project_id) REFERENCES projects(project_id),
FOREIGN KEY (supplier_id) REFERENCES suppliers(supplier_id)
);
Описание потока данных
1. Источник данных:
2. Процесс ETL:
Схема потока данных
[Бизнес-система] --> [Инструменты ETL] --> [хранилище данных: order_submission_facts]
Загрузка в первый день означает первую загрузку исторических данных в хранилище данных.
insert overwrite table dwd_order_submission_facts partition (dt)(
order_id,project_id,project_name,supplier_id,supplier_name,
submission_date,review_date,approval_date,order_amount,
product_quantity,discount_amount,tax_amount,order_status
)
SELECT
o.order_id,
o.project_id,
p.project_name,
o.supplier_id,
s.supplier_name,
o.submission_date,
o.review_date,
o.approval_date,
o.order_amount,
o.product_quantity,
o.discount_amount,
o.tax_amount,
o.order_status
FROM
source_order o
JOIN
source_projects p ON o.project_id = p.project_id
JOIN
source_suppliers s ON o.supplier_id = s.supplier_id
WHERE
o.submission_date <= CURDATE();
Ежедневная загрузка означает периодическую (обычно ежедневную) дополнительную загрузку новых данных.
insert overwrite table dwd_order_submission_facts partition (dt)(
order_id,project_id,project_name,supplier_id,supplier_name,
submission_date,review_date,approval_date,order_amount,
product_quantity,discount_amount,tax_amount,order_status
)
SELECT
o.order_id,
o.project_id,
p.project_name,
o.supplier_id,
s.supplier_name,
o.submission_date,
o.review_date,
o.approval_date,
o.order_amount,
o.product_quantity,
o.discount_amount,
o.tax_amount,
o.order_status
FROM
source_order o
JOIN
source_projects p ON o.project_id = p.project_id
JOIN
source_suppliers s ON o.supplier_id = s.supplier_id
WHERE
o.submission_date = CURDATE();
На этом этапе мы завершили построение таблицы DWD и так далее, чтобы построить все таблицы фактов слоя DWD.