powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / SSIS. Паралельная обработка (a la Producer Consumer Queue)
25 сообщений из 27, страница 1 из 2
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33419382
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стоит задача распараллеливания обработки данных.

Например по каждому счету клиента надо провести уйму вычислений, сама задача по себе изолированна, и в настоящее время реализована в хранимке на MSSQL сервере (там где и данные). Проблема, как создать в SSIS цикл по счетам клиента, операции в котором будут выполнятся не синхронно, а асинхронно. Имея сервер на котором 2, а то и 4 процессора, было бы неплохо иметь возможность используя 4 коннекта к базе и 4 worker, построить нечто типа Producer Consumer Queue, в кооторой на входе очередь из вызовов по обрабоке каждого счета клиента а на выходе n workers, которые по мере выполнения полученных заданий берут из очереди очередное.

Есть ли у кого опыт организации подобной обработки, может даже в других ETL (Data Stage, OWB).

Написать свою компоненту на C# можно и даже есть написанная (только не как SSIS Custom Task), только стоит ли изобретать велосипед :-(
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33419634
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если процедура достаточно долгая, что можно пренебречь накладными расходами на создание джоба, то можно для каждого вызова создавать джоб и запускать уже его
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33419719
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Biryukovесли процедура достаточно долгая, что можно пренебречь накладными расходами на создание джоба, то можно для каждого вызова создавать джоб и запускать уже его

На сколько долгая?

Всего около 500000 дебиторских счетов, транзакций в рассматриваемом периоде около 15 миллионов. Причем есть дебиторы с 50000 тысячами транзакции, так и с 50 транзакций. Считается это на 4-х процессорнике 80 минут. Но 3 проца бездействуют. Диски тоже не в напряге.

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

Создавать 500000 джобов думаю было бы накладно. А вот асинхронный вызов таска в цикле SSIS думаю помог бы. Но как?
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33419899
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а зачем 500000 джобов?
разбейте клиентов на примерно равные части (по кол-ву обрабатываемых данных) и делайте кол-во джобов = кол-ву процессоров
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33419928
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Biryukovа зачем 500000 джобов?
разбейте клиентов на примерно равные части (по кол-ву обрабатываемых данных) и делайте кол-во джобов = кол-ву процессоров

1. Это слишком в лоб и не красиво.
2. Не факт что чел. с 100 транзакциями рассчитывается в 100 раз быстрее чем чел с 10000 оных.
3. Писать алгоритм разбики дебиторов на группы в зависимости от количества транзакции в периоде это тоже напряг и для писателя и для сервера потом его исполнять. Короче не нравится мне это.
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33420159
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда так: процедура в цикле берёт из очереди нерассчитанные счета (по одному или пачками).
и опять делаете джобов по кл-ву процессоров
гарантируется равномерная нагрузка на процессоры и никаких разбивающих алгоритмов не надо
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33420476
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. в таблицу заливаем список всех подлежащих рассчету дебиторов и натравливаем на нее "свору бобиков" по числу процессоров.

хорошая идея, однако.
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33420682
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfireт.е. в таблицу заливаем список всех подлежащих рассчету дебиторов и натравливаем на нее "свору бобиков" по числу процессоров.

хорошая идея, однако.ну можно не в таблицу заливать, а в существующую таблицу поле добавить
но этих "бобиков" нужно будет синхронизировать чтобы они не лочили другу друга и одного и того же дебитора два раза не расчитывали. поможет в этом деле sp_getapplock
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33420948
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, на чистом SQL нельзя что ли обработку написать? Всё будет распараллеливаться сервером. Да, и данных не так уж много у Вас. Хранимки по определению трудно эффективно распараллелить. Куда проще чистый SQL.

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33420983
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин ЛисянскийА что, на чистом SQL нельзя что ли обработку написать? Всё будет распараллеливаться сервером. Да, и данных не так уж много у Вас. Хранимки по определению трудно эффективно распараллелить. Куда проще чистый SQL.

С уважением,
Константин Лисянский
http://lissianski.narod.ru

В смысле на чистом SQL? На на ANSI без курсоров?
Думаю что не получится.
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33421438
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именно без курсоров. А почему не получится? SQL - очень мощный язык.
Можете для примера алгоритм описать, где Вы считаете, что SQL не поможет?


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33423424
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин ЛисянскийИменно без курсоров. А почему не получится? SQL - очень мощный язык.
Можете для примера алгоритм описать, где Вы считаете, что SQL не поможет?


С уважением,
Константин Лисянский
http://lissianski.narod.ru

в упрощенном виде.

Задача 1. (простая)

проводка(дебитор, счет, дата, видоперации, сумма, сальдо_после_операции)

вид операции
-приход
-расход
-начальное сальдо

для "прихода" и "расхода" задана сумма
для "начальное сальдо" задана сальдо_после_операции

задание: заполнить "пустые клетки"

Задача 2. (со звездочкой)

проводка(товар, склад, дата, видоперации, количество, цена, стоимость,
остаток, стоимость остатка, цена остатка)

вид операции
-приход
-расход
-инвентаризация

количество известно для "прихода" и "расхода",
остаток, цена остатка, стоимость остатка известно для "инвентаризации"
цена известна для "расхода".

задание: заполнить "пустые клетки"
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33423684
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfireзадание: заполнить "пустые клетки"

Можно с этого места немного поподробнее? Какие пустые клетки и чем заполнять? Небольшой пример приведите, пожалуйста.
Спасибо.

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33423719
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Лисянский backfireзадание: заполнить "пустые клетки"

Можно с этого места немного поподробнее? Какие пустые клетки и чем заполнять? Небольшой пример приведите, пожалуйста.
Спасибо.

С уважением,
Константин Лисянский
http://lissianski.narod.ruчто непонятного?
для операций приход-расход надо посчитать сальдо после операции
для операции начальное сальдо надо посчитать сумму (хотя тут уже я не понял: чему равна эта сумма?)

2backfire: решал такую задачу, все расчёты были повешены на событие проведение документа. со всеми вытекающими плюсами и минусами...
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33423727
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понял, что пустые клетки нужно заполнять только операций прихода и расхода. Не очень понятно, чем заполнять поле сумма для операции сальдо.


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33423753
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, если я понял задачу правильно, то решат буду примерно так:

Создаём таблицу:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE t_oper
(
  debtor_id INTEGER
 ,account_id INTEGER
 ,oper_date DATE
 ,oper_code CHAR
 ,oper_sum DECIMAL( 15 , 2 )
 ,saldo_sum DECIMAL( 15 , 2 )
)
PRIMARY INDEX (debtor_id, account_id, oper_date, oper_code);

Наполняем:

Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
INSERT INTO t_oper (debtor_id, account_id, oper_date, oper_code, oper_sum, saldo_sum)
VALUES ( 1 ,  1 , DATE '2005-12-01', 'S', NULL,  100 );
INSERT INTO t_oper (debtor_id, account_id, oper_date, oper_code, oper_sum, saldo_sum)
VALUES ( 1 ,  1 , DATE '2005-12-02', 'D',  10 , NULL);
INSERT INTO t_oper (debtor_id, account_id, oper_date, oper_code, oper_sum, saldo_sum)
VALUES ( 1 ,  1 , DATE '2005-12-03', 'D',  20 , NULL);
INSERT INTO t_oper (debtor_id, account_id, oper_date, oper_code, oper_sum, saldo_sum)
VALUES ( 1 ,  1 , DATE '2005-12-04', 'D',  30 , NULL);
INSERT INTO t_oper (debtor_id, account_id, oper_date, oper_code, oper_sum, saldo_sum)
VALUES ( 1 ,  1 , DATE '2005-12-05', 'C',  50 , NULL);
INSERT INTO t_oper (debtor_id, account_id, oper_date, oper_code, oper_sum, saldo_sum)
VALUES ( 1 ,  1 , DATE '2005-12-06', 'C',  10 , NULL);

INSERT INTO t_oper (debtor_id, account_id, oper_date, oper_code, oper_sum, saldo_sum)
VALUES ( 1 ,  2 , DATE '2005-12-01', 'S', NULL,  500 );
INSERT INTO t_oper (debtor_id, account_id, oper_date, oper_code, oper_sum, saldo_sum)
VALUES ( 1 ,  2 , DATE '2005-12-02', 'D',  10 , NULL);
INSERT INTO t_oper (debtor_id, account_id, oper_date, oper_code, oper_sum, saldo_sum)
VALUES ( 1 ,  2 , DATE '2005-12-02', 'D',  50 , NULL);
INSERT INTO t_oper (debtor_id, account_id, oper_date, oper_code, oper_sum, saldo_sum)
VALUES ( 1 ,  2 , DATE '2005-12-02', 'C',  100 , NULL);
INSERT INTO t_oper (debtor_id, account_id, oper_date, oper_code, oper_sum, saldo_sum)
VALUES ( 1 ,  2 , DATE '2005-12-02', 'D',  20 , NULL);

INSERT INTO t_oper (debtor_id, account_id, oper_date, oper_code, oper_sum, saldo_sum)
VALUES ( 2 ,  1 , DATE '2005-12-01', 'S', NULL,  200 );
INSERT INTO t_oper (debtor_id, account_id, oper_date, oper_code, oper_sum, saldo_sum)
VALUES ( 2 ,  1 , DATE '2005-12-02', 'D',  30 , NULL);
INSERT INTO t_oper (debtor_id, account_id, oper_date, oper_code, oper_sum, saldo_sum)
VALUES ( 2 ,  1 , DATE '2005-12-03', 'D',  30 , NULL);
INSERT INTO t_oper (debtor_id, account_id, oper_date, oper_code, oper_sum, saldo_sum)
VALUES ( 2 ,  1 , DATE '2005-12-04', 'D',  30 , NULL);
INSERT INTO t_oper (debtor_id, account_id, oper_date, oper_code, oper_sum, saldo_sum)
VALUES ( 2 ,  1 , DATE '2005-12-05', 'C',  50 , NULL);
INSERT INTO t_oper (debtor_id, account_id, oper_date, oper_code, oper_sum, saldo_sum)
VALUES ( 2 ,  1 , DATE '2005-12-06', 'D',  10 , NULL);

Смотрим, что получилось:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT
  *
FROM
  t_oper
ORDER BY
  debtor_id
 ,account_id
 ,oper_date
;

Результат:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
debtor_id	account_id	oper_date	oper_code	oper_sum	saldo_sum
1	1	2005-12-01	S	?	100,00
1	1	2005-12-02	D	10,00	?
1	1	2005-12-03	D	20,00	?
1	1	2005-12-04	D	30,00	?
1	1	2005-12-05	C	50,00	?
1	1	2005-12-06	C	10,00	?
1	2	2005-12-01	S	?	500,00
1	2	2005-12-02	D	20,00	?
1	2	2005-12-02	D	50,00	?
1	2	2005-12-02	D	10,00	?
1	2	2005-12-02	C	100,00	?
2	1	2005-12-01	S	?	200,00
2	1	2005-12-02	D	30,00	?
2	1	2005-12-03	D	30,00	?
2	1	2005-12-04	D	30,00	?
2	1	2005-12-05	C	50,00	?
2	1	2005-12-06	D	10,00	?


Заполняем пустые ячейки:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT
  debtor_id
 ,account_id
 ,oper_date
 ,SUM(CASE oper_code WHEN 'S' THEN saldo_sum WHEN 'D' THEN  0 . 0 -oper_sum WHEN 'c' THEN oper_sum END)
    OVER (PARTITION BY debtor_id, account_id ORDER BY oper_date ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) missing_cell
FROM
  t_oper
ORDER BY
  debtor_id
 ,account_id
 ,oper_date
;

Результат:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
debtor_id	account_id	oper_date	missing_cell
1	1	2005-12-01	100,00
1	1	2005-12-02	90,00
1	1	2005-12-03	70,00
1	1	2005-12-04	40,00
1	1	2005-12-05	90,00
1	1	2005-12-06	100,00
1	2	2005-12-01	500,00
1	2	2005-12-02	580,00
1	2	2005-12-02	520,00
1	2	2005-12-02	530,00
1	2	2005-12-02	480,00
2	1	2005-12-01	200,00
2	1	2005-12-02	170,00
2	1	2005-12-03	140,00
2	1	2005-12-04	110,00
2	1	2005-12-05	160,00
2	1	2005-12-06	150,00

Убеждаемся в том, что работает параллельно:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
EXPLAIN SELECT
  debtor_id
 ,account_id
 ,oper_date
 ,SUM(CASE oper_code WHEN 'S' THEN saldo_sum WHEN 'D' THEN  0 . 0 -oper_sum WHEN 'c' THEN oper_sum END)
    OVER (PARTITION BY debtor_id, account_id ORDER BY oper_date ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) missing_cell
FROM
  t_oper
ORDER BY
  debtor_id
 ,account_id
 ,oper_date
;

Результат:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Explanation
   1 ) First, we lock a distinct DEV_DB_DWH."pseudo table" for read on a
     RowHash to prevent global deadlock for DEV_DB_DWH.t_oper. 
   2 ) Next, we lock DEV_DB_DWH.t_oper for read. 
   3 ) We do an all-AMPs STAT FUNCTION step from DEV_DB_DWH.t_oper by way
     of an all-rows scan with no residual conditions into Spool  5  (Last
     Use), which is assumed to be redistributed by value to all AMPs. 
     The result rows are put into Spool  1  (group_amps), which is built
     locally on the AMPs.  Then we do a SORT to order Spool  1  by the
     sort key in spool field1. 
   4 ) Finally, we send out an END TRANSACTION step to all AMPs involved
     in processing the request.
  -> The contents of Spool  1  are sent back to the user as the result of
     statement  1 . 

AMP - это единица параллелизма (отдельный процесс, работающий со своим кусочком таблицы). All AMPs означает, что шаг запроса выполняется всеми единицами параллелизма.
Видно, что третий шаг запроса (собственно, вычисление) выполняется параллельно.
Что и требовалось доказать.

По тому же принципу можно решить и вторую задачу.


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33424544
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, Константин.

Ты догадлив, только одно но.

Начальное сальдо не всегда одно а их может быть несколько в истории (дебитора, счета). И не всегда начальное сальдо является первым в истории. Могут быть проводки и до него.


То же самое справедливо и для первой задачи.


Что за супер SQL ты используешь? От кого это? ANSI до этого далеко не дотягивает.
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33424616
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если задачу сформулировать в полном объёме, то можно подумать, как её решить.
Эта задача была очень простая и SQL, как видишь, несложный, и времени его написание заняло пять минут.
Использую СУБД Teradata. Приведённый мной SQL полностью ANSI-1999 совместиый (кроме CREATE TABLE, который имеет особенность, в частности понятие PRIMARY INDEX специфично для Терадаты).
Рекомендую почитать спецификацию на ANSI SQL. Найдёшь много интересного.
Попробуй на SQL Server. Должно сработать.


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33424698
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин ЛисянскийЕсли задачу сформулировать в полном объёме, то можно подумать, как её решить.

Считай, что мой предыдущий комментарий это уже и есть полный объем.
Если что надо дополнить - давай в Асю.

Константин Лисянский
Эта задача была очень простая и SQL, как видишь, несложный, и времени его написание заняло пять минут.
Использую СУБД Teradata. Приведённый мной SQL полностью ANSI-1999 совместиый (кроме CREATE TABLE, который имеет особенность, в частности понятие PRIMARY INDEX специфично для Терадаты).


С "CREATE TABLE" это прикол?

Константин Лисянский
Рекомендую почитать спецификацию на ANSI SQL. Найдёшь много интересного.
Попробуй на SQL Server. Должно сработать.


Пилотаж типа

OVER (PARTITION BY ... CURRENT ROW)

доступен только с Юкона, а в Шилоне - "фиг вам" - индейская хижина.

Оно конечно приятно осваивать новую технику, но если в C# компилятор "приятным женским голосом сообщает", что функция XYZ deprecated и надо юзать функцию zyx, то в T-SQL на курсорах производительность просто просаживатся до нехочу (в 3-4 раза) а дальше думайте сами.
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33425198
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfireНачальное сальдо не всегда одно а их может быть несколько в истории (дебитора, счета). И не всегда начальное сальдо является первым в истории. Могут быть проводки и до него.

В последнем нет ничего страшного - можно ту же операцию и назад распространить и посчитать сальдо от известного назад по операциям. Только не складывать придётся, а вычитать.

Кстати, по поводу ансишности вышеприведённого SQL - есть статейка Ричарда Винтерса:
SQL-99’s New OLAP Functions

backfireСчитай, что мой предыдущий комментарий это уже и есть полный объем.
Если что надо дополнить - давай в Асю.

В Асе я только поздно вечером бываю около 22:00. Если устраивает, то мыль свою асю под ник.

backfireС "CREATE TABLE" это прикол?
Почему прикол? Правду написал. PRIMARY INDEX только в Терадате есть.

backfireПилотаж типа

OVER (PARTITION BY ... CURRENT ROW)

доступен только с Юкона, а в Шилоне - "фиг вам" - индейская хижина.

Сорри, я не подумал. SQL Server в 2000 вышел. А SQL-99 тоже где-то в это время. Не смогли бы они реализовать это всё.

Ну, значит, надо тебе на Юкон переходить. Правда, сомневаюсь в том, что он может эффективно распараллеливать операции, тем более оконные.

backfireОно конечно приятно осваивать новую технику, но если в C# компилятор "приятным женским голосом сообщает", что функция XYZ deprecated и надо юзать функцию zyx, то в T-SQL на курсорах производительность просто просаживатся до нехочу (в 3-4 раза) а дальше думайте сами.

Поэтому я всегда избегал курсоров. Они не параллелятся. А если работаешь с большими объёмами данных, то это очень не хорошо.

Кстати, раз уж зашло о вычислениях на этапе ETL. В Терадате есть такая фиговина, называется Teradata Analytical Calculator (TAC). Это движок параллельных вычислений, как раз предназначеный для проведения массовых параллельных вычислений на больших объёмах данных. Не сочтите за рекламу, просто хочется нести знание в массы :)

По поводу ETL и параллелизма. На мой взгляд, инструменты типа DataStage скоро начнут сдавать позиции, поскольку СУБД уже набрали достаточную мощь для того, чтобы с помощью SQL решать задачи ETL. В подтверждение тому появление такого ETL тулза, как Sunopsis, который делает ETL с помощью генерации SQL. Для него не требуется выделенный сервер ETL (экономия на платформе) и он использует параллельный движок СУБД (хорошая утилизация плоатформы СУБД, производтиельность и масштабируемость). Кстати, на мой взгляд, и с OLAP скоро то же самое будет происходить, реляционные СУБД будут иметь функциональность OLAP прямо в движке СУБД и в SQL (те же оконые функции и т.д).



С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33425291
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Асе я только поздно вечером бываю около 22:00. Если устраивает, то мыль свою асю под ник.

Отмылил.
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33425751
Alex_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfireЧто за супер SQL ты используешь?

Немного добавлю исчерпывающий ответ Константина Лисянского ...
Аналитические функции используемые в вышеприведенном запросе реализованны, также и в БД Oracle.
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33425868
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, что и в DB/2 тоже уже реализованы.


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33425977
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин ЛисянскийДумаю, что и в DB/2 тоже уже реализованы.


С уважением,
Константин Лисянский
http://lissianski.narod.ru

Вот такой я дремучий, сижу на допотопном SQL2000.

Конечно великое переселение на Юкон началось, но это дело не одной ночи.
...
Рейтинг: 0 / 0
SSIS. Паралельная обработка (a la Producer Consumer Queue)
    #33426852
олапист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
боюсь что не поможет: Юкон не поддерживает aggregation group, то есть кусок "ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW" в данном примере :(
http://msdn2.microsoft.com/en-us/library/ms189461.aspx
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / SSIS. Паралельная обработка (a la Producer Consumer Queue)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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