Типичные представления модели хранилища данных звездной схемы Кимбалла выполнимы? и как кодировать ген



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



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 должно содержать уникальные имена столбцов, и я также обеспокоен производительностью оптимизатора, если я пойду вперед и сделаю это, потому что я обеспокоен тем, что все элементы в предложении WHERE пересекаются различные факты и измерения оптимизируются, так как вид будет проходить через всю звезду, а виды не могут быть параметризованы (Боже, разве это не круто!)



Итак, мои вопросы -





  1. Подходит ли этот подход, или это просто абстракция, которая вредит производительности и не дает мне ничего, кроме гораздо более приятного синтаксиса?



  2. Как лучше всего кодировать эти представления, устраняя повторяющиеся имена столбцов (даже если представление позже должно быть изменено рука), учитывая, что все соответствующие ПК и ФКС находятся на месте? Должен ли я просто написать некоторый SQL, чтобы вытащить его из INFORMATION_SCHEMA или уже есть хороший пример.



Edit: я протестировал его, и производительность кажется одинаковой, даже на более крупных процессах-даже при соединении нескольких звезд, каждая из которых использует эти представления.



Автоматизация в основном потому, что в хранилище данных есть несколько таких звезд, и FK/PK был сделан должным образом дизайнеры, но я не хочу перебирать все таблицы или документацию. Я написал скрипт для генерации представления (он также генерирует аббревиатуры для таблиц), и он хорошо работает для автоматической генерации скелета из INFORMATION_SCHEMA, а затем его можно настроить перед выполнением создания представления.



Если кому-то нужен код, я, вероятно, мог бы опубликовать его здесь.

596   3  

3 ответов:

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

  2. Я создал представления с помощью конструктора в среде SQL Server management studio и не использовал никакого автоматизированного подхода. Я не могу себе представить, что схема меняется достаточно часто, чтобы автоматизировать ее в любом случае стоило. Вы можете потратить как долгое изменение результатов, как это потребовалось бы, чтобы перетащить все таблицы на вид в первую очередь!

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

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

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

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

Если вы используете MS SQL Server, вы можете попробовать встроенный UDF, который максимально приближен кпараметризованному представлению .

Comments

    Ничего не найдено.