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

Откуда:
Сообщений: 11
Есть запрос к Linked-серверу MSSAS:

insert into FC_SALESHISTORY_CS select * from openquery(OLAP,'
SELECT
[Stores].[Stores].&[00012904] On Columns,
Non empty [Products].[Products].[code].members On Rows
From [MM Storage]
WHERE ( [Measures].[ClearSales],([TIME].[Period].&[2014-05-14T00:00:00]:[TIME].[Period].&[2014-08-21T00:00:00]))')

В случае, когда в кубе есть данные - запрос возвращает 2 колонки. Если данных нет - только 1 и запрос вылетает с ошибкой 'Column name or number of supplied values does not match table definition.' Заранее неизвестно, есть ли данные (запросы к кубу разные - это только пример)

Как бы ее так красиво обойти без обработки исключений и лишних промежуточных таблиц?
22 авг 14, 11:46    [16478856]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в таблицу при неизвестном количестве полей исходной таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
Tupoy1cnik
Как бы ее так красиво обойти без обработки исключений и лишних промежуточных таблиц?

Написать такой запрос, который всегда будет возвращать одинаковое число полей ?
22 авг 14, 11:59    [16478948]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в таблицу при неизвестном количестве полей исходной таблицы  [new]
Tupoy1cnik
Member

Откуда:
Сообщений: 11
Это могло бы быть решением. Оператор Non empty сильно оптимизирует производительность запроса, но при этом вот таким образом функционирует (если данных нет - нет и колонки). А сделать так, чтобы запрос работал быстро, и при этом возвращал все поля я пока не смог.
22 авг 14, 12:08    [16479031]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в таблицу при неизвестном количестве полей исходной таблицы  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4823
Glory
Tupoy1cnik
Как бы ее так красиво обойти без обработки исключений и лишних промежуточных таблиц?

Написать такой запрос, который всегда будет возвращать одинаковое число полей ?


Ответ невозможно в случае MDX.

Мы решали эту проблему написание CLR функции, которая загружала данные в dataset и потом возвращала гарантированное число колонок.

Вы еще не столкнулись со второй проблемой: это размер запроса в openquery не может превышать 8К.
22 авг 14, 15:19    [16480533]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в таблицу при неизвестном количестве полей исходной таблицы  [new]
Tupoy1cnik
Member

Откуда:
Сообщений: 11
a_voronin,
я пока решил, правда не оптимально - проверяю наличие данных в кубике по набору измерений
ограничение на размер текста запроса или на выборку?
26 авг 14, 09:44    [16492098]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить