powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Подгрузка новой информации в DWH
13 сообщений из 13, страница 1 из 1
Подгрузка новой информации в DWH
    #33141671
Гедеван Александрович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблицы измерений, как я понимаю, не должны содержать повторяющихся значений. Поэтому когда требуется подкачать в хранилище данные за последний день, возникает вопрос - а как добавить свежие данные в эти таблицы чтобы там не получилось одинаковых записей?

Пока придумал вот что (см. часть WHERE):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
INSERT INTO [DWH].[dbo].[Manufacturer_Dim]
([ManufacturerId], [Name], [Description])
SELECT DISTINCT
	m.[Id], m.[Name], m.[Description] 
FROM [Product] p
LEFT OUTER JOIN [prices].[dbo].[Manufacturer] AS m
ON p.[ManufacturerID] = m.[Id]
WHERE 
	m.[Id] NOT IN (SELECT [ManufacturerId] FROM [DWH].[dbo].[Manufacturer_Dim])
	AND 
	p.[Id] > @LastTransformationId

т.е. идёт проверка для каждого нового значения на уже присутствие его в данной таблице измерений. Но таблица измерений со временем может вырасти достаточно сильно (особенно это актуально для измерения "Дата"). Функция "IN" и так не очень рекомендуется как слишком медленная, а тут и вовсе тормоза пойдут.

Может эта проблема имеет какое-нибудь более оптимальное решение? Подскажите плиз.

P.S. Или успокойте меня тем, что ничего иного сделать нельзя
...
Рейтинг: 0 / 0
Подгрузка новой информации в DWH
    #33142308
Гедеван Александрович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
up
...
Рейтинг: 0 / 0
Подгрузка новой информации в DWH
    #33142326
joni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гедеван Александрович
Может эта проблема имеет какое-нибудь более оптимальное решение?
Угу, называется оно Incremental update измерения.

Код: plaintext
1.
2.
3.
4.
5.
CREATE VIEW Manufacturer_Dim
AS
SELECT
	m.[Id], m.[Name], m.[Description] 
FROM [prices].[dbo].[Manufacturer] AS m

А DISTINCT Analysis Services и сам вставит, когда будет данные для измерения получать.
...
Рейтинг: 0 / 0
Подгрузка новой информации в DWH
    #33142332
joni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я почему-то решил, что речь обязательно об Analysis Services, если не это не так, то простите что влез :)
...
Рейтинг: 0 / 0
Подгрузка новой информации в DWH
    #33142443
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Инкрементальная часть.
Код: plaintext
1.
2.
3.
4.
SELECT DISTINCT
	m.[Id], m.[Name], m.[Description] 
FROM [Manufacturer] AS m
WHERE not exists (select top  1  * from [DWH].[dbo].[Manufacturer_Dim] d where d.ManufacturerId= m.id)

Не совсем понятно присутствие таблицы Product. Можно дополнительно довести и это ограничение, но тогда может случиться, что не все данные будут вставлены в измерение.

Проверки лучше вести через where exists / not exists, чем через IN.
...
Рейтинг: 0 / 0
Подгрузка новой информации в DWH
    #33142504
joni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А я все-таки не понимаю, зачем в принципе определять инкрементальную часть, а не оставлять это на совести сервера?
...
Рейтинг: 0 / 0
Подгрузка новой информации в DWH
    #33142581
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Загрузка идет в ЦХД (или витрину), а это БД SQL Server, но не Analysis Server. Измерение можно залить либо инкрементально, либо целиком предварительно очистив его в витрине. При инкрементальном обновлении измерения MSAS действительно сам обнаружит все изменения.
...
Рейтинг: 0 / 0
Подгрузка новой информации в DWH
    #33142605
Гедеван Александрович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А DISTINCT Analysis Services и сам вставитОй, правда? (AS и используется). Т.е. в таблицу измерений можно загонять дублирующиеся данные, а в измерения они попадут в единственной копии?

Проверки лучше вести через where exists / not exists, чем через IN.Спасибо, учту на будущее.
...
Рейтинг: 0 / 0
Подгрузка новой информации в DWH
    #33142606
joni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну так и создать в витрине вьюшку, которая будет грести данные из базы... Хотя это наверное уже дело вкуса.
...
Рейтинг: 0 / 0
Подгрузка новой информации в DWH
    #33143139
Фотография brahew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант, можно создать тригерные таблицы изменений ключевых таблиц, при классическом построение хранилища, это даст возможность работы как с поддержкой историчности, так и без нее. На больших объемах и разнесение серверов на узкие каналы, проверка на наличие работать будет медленно

В данной задаче изменения задним числом не присутствуют?
...
Рейтинг: 0 / 0
Подгрузка новой информации в DWH
    #33143381
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
joni
А DISTINCT Analysis Services и сам вставит, когда будет данные для измерения получать.

Пока вставит, но в Юконе эта халява для ленивых закончилась и о дуплетах надо самому заботится.
...
Рейтинг: 0 / 0
Подгрузка новой информации в DWH
    #33143390
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AAronИнкрементальная часть.
Код: plaintext
1.
2.
3.
4.
SELECT DISTINCT
	m.[Id], m.[Name], m.[Description] 
FROM [Manufacturer] AS m
WHERE not exists (select top  1  * from [DWH].[dbo].[Manufacturer_Dim] d where d.ManufacturerId= m.id)

Не совсем понятно присутствие таблицы Product. Можно дополнительно довести и это ограничение, но тогда может случиться, что не все данные будут вставлены в измерение.

Проверки лучше вести через where exists / not exists, чем через IN.

top 1 совершенно без надобности. Смотри план запроса.
...
Рейтинг: 0 / 0
Подгрузка новой информации в DWH
    #33143654
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в данном случае - да. Просто привычка. В некоторых случаях использование Top 1 позволяет улучшить план и снизить количество чтений с диска.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Подгрузка новой информации в DWH
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]