powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Создание измерение "Период" со всеми датами за период?
17 сообщений из 17, страница 1 из 1
Создание измерение "Период" со всеми датами за период?
    #33377563
Pvase
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой запрос надо прописать в DTS чтобы получить в таблицу измерений периодов (все даты) все даты за период, а не только те, котороые есть в таблице фактов?
Вот пример получения всех дат с 01.01.1996 по 31.12.2010 во временную таблицу:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CREATE TABLE #PeriodTMP
	(
	PeriodID int NOT NULL IDENTITY ( 1 ,  1 ),
	[Date] datetime NOT NULL
	)

DECLARE @DateStart DateTime
DECLARE @DateEND DateTime
SET @DateStart = Convert(datetime,'19960101', 112 );
SET @DateEND = Convert(datetime,'20101231', 112 )
While @DateStart <= @DateEND 
BEGIN
	IF DatePart(yy,@DateStart)% 4  =  0 
	INSERT INTO #PeriodTMP ([Date])
	select top  366  dateadd(dd, -Day(@DateStart), dateadd(mm,-Month(@DateStart)+ 1 ,@DateStart)) +(select count(*) from master..sysobjects where id<=a.id) AS [Date] 
	from master..sysobjects a Order by [Date]
	ELSE
	INSERT INTO #PeriodTMP ([Date])
	select top  365  dateadd(dd, -Day(@DateStart), dateadd(mm,-Month(@DateStart)+ 1 ,@DateStart)) +(select count(*) from master..sysobjects where id<=a.id) AS [Date] 
	from master..sysobjects a Order by [Date]
	
	SELECT @DateStart = dateadd(yy, 1 ,@DateStart)

END
Но такой код не для DTS, что посоветуете чтобы подобное выполнить для заполнения таблицы измерений?
...
Рейтинг: 0 / 0
Создание измерение "Период" со всеми датами за период?
    #33377576
Parkhomets Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PvaseКакой запрос надо прописать в DTS чтобы получить в таблицу измерений периодов (все даты) все даты за период, а не только те, котороые есть в таблице фактов?
Вот пример получения всех дат с 01.01.1996 по 31.12.2010 во временную таблицу:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CREATE TABLE #PeriodTMP
	(
	PeriodID int NOT NULL IDENTITY ( 1 ,  1 ),
	[Date] datetime NOT NULL
	)

DECLARE @DateStart DateTime
DECLARE @DateEND DateTime
SET @DateStart = Convert(datetime,'19960101', 112 );
SET @DateEND = Convert(datetime,'20101231', 112 )
While @DateStart <= @DateEND 
BEGIN
	IF DatePart(yy,@DateStart)% 4  =  0 
	INSERT INTO #PeriodTMP ([Date])
	select top  366  dateadd(dd, -Day(@DateStart), dateadd(mm,-Month(@DateStart)+ 1 ,@DateStart)) +(select count(*) from master..sysobjects where id<=a.id) AS [Date] 
	from master..sysobjects a Order by [Date]
	ELSE
	INSERT INTO #PeriodTMP ([Date])
	select top  365  dateadd(dd, -Day(@DateStart), dateadd(mm,-Month(@DateStart)+ 1 ,@DateStart)) +(select count(*) from master..sysobjects where id<=a.id) AS [Date] 
	from master..sysobjects a Order by [Date]
	
	SELECT @DateStart = dateadd(yy, 1 ,@DateStart)

END
Но такой код не для DTS, что посоветуете чтобы подобное выполнить для заполнения таблицы измерений?

EXEC скрипт
...
Рейтинг: 0 / 0
Создание измерение "Период" со всеми датами за период?
    #33377842
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PvaseКакой запрос надо прописать в DTS чтобы получить в таблицу измерений периодов (все даты) все даты за период, а не только те, котороые есть в таблице фактов?
<skipped>
Но такой код не для DTS, что посоветуете чтобы подобное выполнить для заполнения таблицы измерений?А что вам мешает один раз выполнить ХП на много лет вперёд?
...
Рейтинг: 0 / 0
Создание измерение "Период" со всеми датами за период?
    #33380486
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В году 365.25 дней, на 100 лет (+/- 50 лет от текущей даты) - это примерно 36,525 дней. Создаем табличку на 50 тыс записей в базе данных, заполняем ее датами и по LEFT JOIN объединяем с нужной выборкой.
...
Рейтинг: 0 / 0
Создание измерение "Период" со всеми датами за период?
    #33381133
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМВ году 365.25 дней, на 100 лет (+/- 50 лет от текущей даты) - это примерно 36,525 дней. Создаем табличку на 50 тыс записей в базе данных, заполняем ее датами и по LEFT JOIN объединяем с нужной выборкой.

А зачем JOIN и зачем LEFT? И о какой выборке идет речь?
...
Рейтинг: 0 / 0
Создание измерение "Период" со всеми датами за период?
    #33382202
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfireА зачем JOIN и зачем LEFT? И о какой выборке идет речь?
А Вы прочитайте исходный вопрос.

Есть таблица фактов. В ней есть даты, но с разрывами. Надо получить полный список дат без разрывов.

Вот я и предлагаю, создать на сервере постоянную таблицу с датами за +/-50 лет от текущей даты и к ней по LEFT JOIN цеплять фактическую таблицу с данными. Получаем полный список дат без разрывов. Этот JOIN вполне можно выполнить в DTS
...
Рейтинг: 0 / 0
Создание измерение "Период" со всеми датами за период?
    #33382218
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
измерение дат без разрывов строится по таблице дат
LEFT JOIN тут не причём.
он может и полезен, но в SQL решениях, а не в MC AC
...
Рейтинг: 0 / 0
Создание измерение "Период" со всеми датами за период?
    #33382440
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Biryukovизмерение дат без разрывов строится по таблице дат
LEFT JOIN тут не причём.
он может и полезен, но в SQL решениях, а не в MC AC
Можете подсказать, как заставить выводить данные без разрывов? У меня не получается без предварительного LEFT JOIN

Т.е. само измерение, конечно, непрерывное. Но вот те значения из измерения, по которым нет данных просто не отображаются.

MS AS вывод идет в Excel
...
Рейтинг: 0 / 0
Создание измерение "Период" со всеми датами за период?
    #33382850
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ Dmitry Biryukovизмерение дат без разрывов строится по таблице дат
LEFT JOIN тут не причём.
он может и полезен, но в SQL решениях, а не в MC AC
Можете подсказать, как заставить выводить данные без разрывов? У меня не получается без предварительного LEFT JOIN

Т.е. само измерение, конечно, непрерывное. Но вот те значения из измерения, по которым нет данных просто не отображаются.

MS AS вывод идет в Excel


А при чем тут Excel к MSAS. Excel выводит двееык так, как он создает запросы. Судить по Excel о MSAS по меньшей мере скоропалительно.
...
Рейтинг: 0 / 0
Создание измерение "Период" со всеми датами за период?
    #33382963
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМТ.е. само измерение, конечно, непрерывное. Но вот те значения из измерения, по которым нет данных просто не отображаются.
MS AS вывод идет в Excel
Если я правильно понял, то в Excel Вы не видете дни в которых нет данных ? Этп наверное происходит потому что Excel по умолчанию работает в режиме "NON EMPTY", можно это поменять сказав "Show empty members".


Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Создание измерение "Период" со всеми датами за период?
    #33386373
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaЕсли я правильно понял, то в Excel Вы не видете дни в которых нет данных ? Этп наверное происходит потому что Excel по умолчанию работает в режиме "NON EMPTY", можно это поменять сказав "Show empty members".
Да. Правильно. Проблема именно в Excel. Только я не понял, где именно надо сказать "Show empty members"? Если это настройка Excel, то где она делается?
...
Рейтинг: 0 / 0
Создание измерение "Период" со всеми датами за период?
    #33425646
Polevi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, мне тоже интересно
...
Рейтинг: 0 / 0
Создание измерение "Период" со всеми датами за период?
    #33425843
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
было в параметрах сводной таблицы когдато
...
Рейтинг: 0 / 0
Создание измерение "Период" со всеми датами за период?
    #33426424
Polevi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не нашел
приходится код на VBA писать
...
Рейтинг: 0 / 0
Создание измерение "Период" со всеми датами за период?
    #33426681
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а галочку поставить для пустый ячеек отображать..., пробывали?
...
Рейтинг: 0 / 0
Создание измерение "Период" со всеми датами за период?
    #33426908
Polevi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
причем тут это
...
Рейтинг: 0 / 0
Создание измерение "Период" со всеми датами за период?
    #33426994
Фотография Валек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошу прощения не в ту лузу как говориться,
свойство надо устанавливать програмным путем
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Создание измерение "Период" со всеми датами за период?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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