Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Создание измерение "Период" со всеми датами за период? / 17 сообщений из 17, страница 1 из 1
14.11.2005, 19:16
    #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
14.11.2005, 19:25
    #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
15.11.2005, 02:33
    #33377842
Dmitry Biryukov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание измерение "Период" со всеми датами за период?
PvaseКакой запрос надо прописать в DTS чтобы получить в таблицу измерений периодов (все даты) все даты за период, а не только те, котороые есть в таблице фактов?
<skipped>
Но такой код не для DTS, что посоветуете чтобы подобное выполнить для заполнения таблицы измерений?А что вам мешает один раз выполнить ХП на много лет вперёд?
...
Рейтинг: 0 / 0
16.11.2005, 09:20
    #33380486
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание измерение "Период" со всеми датами за период?
В году 365.25 дней, на 100 лет (+/- 50 лет от текущей даты) - это примерно 36,525 дней. Создаем табличку на 50 тыс записей в базе данных, заполняем ее датами и по LEFT JOIN объединяем с нужной выборкой.
...
Рейтинг: 0 / 0
16.11.2005, 12:43
    #33381133
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание измерение "Период" со всеми датами за период?
ВладимирМВ году 365.25 дней, на 100 лет (+/- 50 лет от текущей даты) - это примерно 36,525 дней. Создаем табличку на 50 тыс записей в базе данных, заполняем ее датами и по LEFT JOIN объединяем с нужной выборкой.

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

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

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

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

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

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

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


А при чем тут Excel к MSAS. Excel выводит двееык так, как он создает запросы. Судить по Excel о MSAS по меньшей мере скоропалительно.
...
Рейтинг: 0 / 0
17.11.2005, 07:39
    #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
18.11.2005, 11:46
    #33386373
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание измерение "Период" со всеми датами за период?
MoshaЕсли я правильно понял, то в Excel Вы не видете дни в которых нет данных ? Этп наверное происходит потому что Excel по умолчанию работает в режиме "NON EMPTY", можно это поменять сказав "Show empty members".
Да. Правильно. Проблема именно в Excel. Только я не понял, где именно надо сказать "Show empty members"? Если это настройка Excel, то где она делается?
...
Рейтинг: 0 / 0
08.12.2005, 16:48
    #33425646
Polevi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание измерение "Период" со всеми датами за период?
да, мне тоже интересно
...
Рейтинг: 0 / 0
08.12.2005, 18:07
    #33425843
Валек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание измерение "Период" со всеми датами за период?
было в параметрах сводной таблицы когдато
...
Рейтинг: 0 / 0
09.12.2005, 08:04
    #33426424
Polevi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание измерение "Период" со всеми датами за период?
я не нашел
приходится код на VBA писать
...
Рейтинг: 0 / 0
09.12.2005, 10:23
    #33426681
Валек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание измерение "Период" со всеми датами за период?
а галочку поставить для пустый ячеек отображать..., пробывали?
...
Рейтинг: 0 / 0
09.12.2005, 11:33
    #33426908
Polevi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание измерение "Период" со всеми датами за период?
причем тут это
...
Рейтинг: 0 / 0
09.12.2005, 11:56
    #33426994
Валек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание измерение "Период" со всеми датами за период?
прошу прощения не в ту лузу как говориться,
свойство надо устанавливать програмным путем
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Создание измерение "Период" со всеми датами за период? / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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