Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SSIS и обработка значений с нарастающим итогом.  [new]
avorsa
Member

Откуда: Msk
Сообщений: 85
Имеем MSDE 2005
При помощи Data flow task таскаю данные из Acces'овских баз.
Используя Lookup по столбцу Sequence беру только новые данные.
Одним из столбцов является kVAh Total, который идет с нарастающим итогом.
пример
StringTime Sequence kVAh Total
2009-04-30 14:35:00 0 30,5
2009-04-30 14:40:00 1 30,6
2009-04-30 14:45:00 2 30,7
2009-04-30 14:50:00 3 30,8
2009-04-30 14:55:00 4 31,0

Хочу иметь следующее
StringTime Sequence kVAh Total kVAhPeriod
2009-04-30 14:35:00 0 30,5 0
2009-04-30 14:40:00 1 30,6 0,1
2009-04-30 14:45:00 2 30,7 0,1
2009-04-30 14:50:00 3 30,8 0,1
2009-04-30 14:55:00 4 31,0 0,2

Думаю сделать это средствами SSIS
Пробовал использовать Derived Column, новый столбец добавляется, но операция текущее значение - предыдущее сделать там не получается.
Как быть?

Может есть решение проще?
15 сен 09, 15:30    [7662074]     Ответить | Цитировать Сообщить модератору
 Re: SSIS и обработка значений с нарастающим итогом.  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
Ну, на вскидку...
можно сначала разделить набор данных Multicast-ом, а далее Merge Join по полю Sequence со сдвигом
ну и далее Derived Column
15 сен 09, 17:48    [7663347]     Ответить | Цитировать Сообщить модератору
 Re: SSIS и обработка значений с нарастающим итогом.  [new]
avorsa
Member

Откуда: Msk
Сообщений: 85
Почитав MSDN понял, что SSIS это сделать не получиться
и потому модернизировал свой существующий Execute SQL task, в котором выполняется Insert, до следующего вида
INSERT INTO [PAS].[dbo].[H01_03D_test]

SELECT 
a.DoubleTime
, CONVERT(datetime, StringTime) AS StringTime
, a.[Trigger]
, a.Sequence
, a.V, a.I, a.kW
, a.[kWh Import]
, a.[kVAh TOTAL]
, a.pF
, a.ErrorCode, a.ErrorColumn
, a.[kVAh Total] - isnull (
	(
	select 
		top 1 b.[kVAh Total]
		from [PAS].[dbo].[temp] b
		where b.[StringTime] < a.[StringTime]
		order by b.[StringTime] desc
	)
	, 0) as kVAhPeriod
        FROM [PAS].[dbo].[temp] a

 DELETE FROM [PAS].[dbo].[temp]

Теперь думаю как сюда прикрутить обработку ситуации, когда kVAh Total будет переваливать через значение 100 000 000 (предел счетчика).
В Excele формулой делал так IF(C5<C2;SUM((100000000-C2)+C5);ABS(C5-C2))
15 сен 09, 17:59    [7663443]     Ответить | Цитировать Сообщить модератору
 Re: SSIS и обработка значений с нарастающим итогом.  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
avorsa
Почитав MSDN понял, что SSIS это сделать не получиться

А мужики то и не знают :)

Исходные данные:
Sequence Total
0 30.5
1 30.6
2 30.7
3 30.8
4 31.0


Итог:
Картинка с другого сайта.

К сообщению приложен файл. Размер - 0Kb
16 сен 09, 11:42    [7666162]     Ответить | Цитировать Сообщить модератору
 Re: SSIS и обработка значений с нарастающим итогом.  [new]
avorsa
Member

Откуда: Msk
Сообщений: 85
Дедушка, а можете dtsx данный скинуть почтой (mail указан в профиле) ?
16 сен 09, 23:37    [7670527]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить