У меня есть хранилище данных, содержащее типовые схемы звезды и целую кучу кода, который делает такие вещи, как это (очевидно, намного больше, но это в качестве примера):Типичный склад данных Star-schema Kimball - варианты моделей Возможны? и как закодировать Gen
SELECT cdim.x
,SUM(fact.y) AS y
,dim.z
FROM fact
INNER JOIN conformed_dim AS cdim
ON cdim.cdim_dim_id = fact.cdim_dim_id
INNER JOIN nonconformed_dim AS dim
ON dim.ncdim_dim_id = fact.ncdim_dim_id
INNER JOIN date_dim AS ddim
ON ddim.date_id = fact.date_id
WHERE fact.date_id = @date_id
GROUP BY cdim.x
,dim.z
Я думать о замене его с учетом (MODEL_SYSTEM_1
, скажем), так что она становится:
SELECT m.x
,SUM(m.y) AS y
,m.z
FROM MODEL_SYSTEM_1 AS m
WHERE m.date_id = @date_id
GROUP BY m.x
,m.z
Но вид MODEL_SYSTEM_1
должен был бы содержать уникальные имена столбцов, и я также обеспокоен производительности с оптимизатором, если я сделайте это, потому что я обеспокоен тем, что все предметы в WH пункт ERE через различные факты и размеры получить оптимизирован, так как вид будет через всю звезду, и взгляды не могут быть параметризованным (мальчик, не было бы круто!)
Так что мои вопросы -
Является ли этот подход ОК, или это будет просто абстракция, которая ухудшает производительность и не дает мне ничего, кроме много более сильного синтаксиса?
Каков наилучший способ кодирования этих представлений, исключая повторяющиеся имена столбцов (даже если представление позже нужно настроить вручную), учитывая, что все подходящие ПК и FK установлены? Должен ли я просто написать некоторый SQL, чтобы вытащить его из
INFORMATION_SCHEMA
или есть хороший пример, уже доступный.
Edit: Я испытал это, и производительность, кажется, то же самое, даже на более крупные процессы - даже соединения нескольких звезд, которые каждый используют эти взгляды.
Автоматизация в основном связана с тем, что в хранилище данных есть несколько этих звезд, а FK/PK были выполнены дизайнерами должным образом, но я не хочу, чтобы вы просматривали все таблицы или документация. Я написал сценарий для создания представления (он также генерирует сокращения для таблиц), и он хорошо работает, чтобы сгенерировать скелет автоматически с INFORMATION_SCHEMA
, а затем его можно настроить, прежде чем совершить создание представления.
Если кому-то нужен код, я мог бы, вероятно, опубликовать его здесь.
Я не буду следовать этому - если я сплющил всю звезду, чтобы эффективно проиндексировать таблицу по-другому, какова была точка размерной модели в первую очередь? –
Не сплющивание, свертывание. Если вы загружаете данные, вам следует рассмотреть вопрос о материализации представлений. Это будет быстрее. – ConcernedOfTunbridgeWells
Все разные запросы делают разные вещи - это будет только базовым представлением звезды без какой-либо аналитической интерпретации, которая была бы полезна для устранения повторяющихся копий-пасты, исследований и позволяла бы абстракции, когда представление могло бы исправлять ошибки в модели, а также , –