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

Откуда: Москва
Сообщений: 902
Всем привет.
Есть громоздкая формула, которая использется в десятке скриптов.
Есть ли у SQL-сервера функционал позволяющий создать соответствующий объект, который бы вызывался при необходимости и был бы при этом формулой?

Скалярная функция не подходит.
14 сен 15, 17:42    [18147855]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4807
Yagrus2
Скалярная функция не подходит.


Тогда поясните, что так такого страшного в этой формуле, что её нельзя реализовать в скалярной функции?
14 сен 15, 17:44    [18147861]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
o-o
Guest
a_voronin
Yagrus2
Скалярная функция не подходит.


Тогда поясните, что так такого страшного в этой формуле, что её нельзя реализовать в скалярной функции?

так сама скалярка страшнее формулы.
по времени выполнения
14 сен 15, 17:47    [18147882]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
a_voronin
Yagrus2
Скалярная функция не подходит.


Тогда поясните, что так такого страшного в этой формуле, что её нельзя реализовать в скалярной функции?


Есть N-таблиц.
Одна из них (упрощенно) состоит из столбцов:
id_груза,
Количество,
КоличествоПР,
КоличествоЖУ,
Объем,
ОбъемЖУ,
ОбъемПР

Для каждого id_груза, именно этими столбцами определяется громоздкая формула.
Все остальные N-1 таблицы связаны с ней (один к одному или один ко многим). Обозначим их "ТАБЛИЦЫ".

Есть ряд скриптов, которых первая таблица джойнится с несколькими таблицами из списка "ТАБЛИЦЫ".
При внесении изменений в формулу, приходится лопатить много скриптов.

Если идти по пути скалярной функции (создать скл. ф-цию, с входным параметром [id_груза]) - то на большем объеме данных ничего хорошего не получается.(Даже при связи один к одному)
Обсчет происходит очень долго.
14 сен 15, 18:12    [18148009]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
СТУДЕНТ123
Guest
Yagrus2
a_voronin
пропущено...


Тогда поясните, что так такого страшного в этой формуле, что её нельзя реализовать в скалярной функции?


Есть N-таблиц.
Одна из них (упрощенно) состоит из столбцов:
id_груза,
Количество,
КоличествоПР,
КоличествоЖУ,
Объем,
ОбъемЖУ,
ОбъемПР

Для каждого id_груза, именно этими столбцами определяется громоздкая формула.
Все остальные N-1 таблицы связаны с ней (один к одному или один ко многим). Обозначим их "ТАБЛИЦЫ".

Есть ряд скриптов, которых первая таблица джойнится с несколькими таблицами из списка "ТАБЛИЦЫ".
При внесении изменений в формулу, приходится лопатить много скриптов.

Если идти по пути скалярной функции (создать скл. ф-цию, с входным параметром [id_груза]) - то на большем объеме данных ничего хорошего не получается.(Даже при связи один к одному)
Обсчет происходит очень долго.
это что такое? формула то что делает? расчитывает объем исходя из колличества * на стандартный объем одной номенклатуры?
14 сен 15, 18:27    [18148069]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
СТУДЕНТ123,
Она рассчитывает "корректный" объем
14 сен 15, 18:30    [18148084]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
СТУДЕНТ123
Guest
Тогда что именно Вам мешает получать корректные данные (значения) при вводе очередного id_груза, а не проверять его корректность после ввода.
Если имеется фактор того, что метрические данные внесенны не корректно (по которым уже произведен расчет), то лучше при минимальной нагрузки на сервер запускайте свою страшную формулу на UPDATE (к примеру когда все спят или на обед ушли), для пересчета корректных значений, но в жизне подобного не видел (обычно это динамичные значения в WMS)
14 сен 15, 18:40    [18148109]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31778
Yagrus2
Всем привет.
Есть громоздкая формула, которая использется в десятке скриптов.
Есть ли у SQL-сервера функционал позволяющий создать соответствующий объект, который бы вызывался при необходимости и был бы при этом формулой?

Скалярная функция не подходит.
Можно сделать inline - функцию.
14 сен 15, 19:08    [18148211]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
invm
Member

Откуда: Москва
Сообщений: 9633
Yagrus2
Есть N-таблиц.
Одна из них (упрощенно) состоит из столбцов:
id_груза,
Количество,
КоличествоПР,
КоличествоЖУ,
Объем,
ОбъемЖУ,
ОбъемПР

Для каждого id_груза, именно этими столбцами определяется громоздкая формула.
Все остальные N-1 таблицы связаны с ней (один к одному или один ко многим). Обозначим их "ТАБЛИЦЫ".
Заведите в этой таблице вычисляемый столбец, содержащий вашу супер-формулу.
Либо создайте view и используйте его в джойнах вместо таблицы.
14 сен 15, 20:12    [18148420]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
Скалярная фу
Guest
Yagrus2,

как вариант, можно кодогенерацию применять: код подстановки "формул" в теле всего где надо, далее срабатывает генерилка и подставляет раскрытие (полный текст формулы)

но пока больше похоже что заранее все это можно вычислить (еще при записи или той же вычисляемой колонкой)
если от использующей формулу хранимки результат не меняется, то так и надо сделать.
14 сен 15, 20:35    [18148509]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
alexeyvg
Yagrus2
Всем привет.
Есть громоздкая формула, которая использется в десятке скриптов.
Есть ли у SQL-сервера функционал позволяющий создать соответствующий объект, который бы вызывался при необходимости и был бы при этом формулой?

Скалярная функция не подходит.
Можно сделать inline - функцию.

INLINE TABLE-VALUE если быть точнее. Иначе всё равно потери в производительности.
15 сен 15, 09:42    [18149808]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
Yuri Abele
alexeyvg
пропущено...
Можно сделать inline - функцию.

INLINE TABLE-VALUE если быть точнее. Иначе всё равно потери в производительности.
Скалярные инлайн функции микрософтом не реализованы.
Так что и так всё понятно.
15 сен 15, 09:46    [18149823]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
iap,

Что понятно?

Остается либо view либо вычислительный столбец делать?
15 сен 15, 10:19    [18150017]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
Yagrus2
iap,

Что понятно?

Остается либо view либо вычислительный столбец делать?
либо inline nable function - сказали же уже.
Я бы сделал именно функцию.

Просто обратил внимание, что выражение "inline - функцию" можно и не уточнять выражением "INLINE TABLE-VALUE". Больше ничего.
15 сен 15, 10:25    [18150066]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
iap,
инлайн функция - это обычная табличная?
15 сен 15, 10:41    [18150157]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
invm
Member

Откуда: Москва
Сообщений: 9633
Yagrus2
Остается либо view либо вычислительный столбец делать?

Если формула статична - делать вычисляемый столбец.
Иначе - вью.

Инлайновая функция с одним параметром id даст в запросах самосоединение таблицы.
Инлайновая функция с кучей параметров, просто инкапсулирующая формулу, при использовании физически аналогична вью или вычисляемому столбцу. Но при изменении количества или порядка параметров опять придется "перелопачивать" все скрипты, где она используется.

Что выбрать - дело ваше.
15 сен 15, 10:42    [18150161]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
Yagrus2
iap,
инлайн функция - это обычная табличная?
Табличные функции бывают двух видов - inline и multistatement.
Здесь все имеют в виду inline.
Она же может всегда возвращать одну строку, состоящую из одного поля?
15 сен 15, 10:46    [18150176]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
iap
Yagrus2
iap,
инлайн функция - это обычная табличная?
Табличные функции бывают двух видов - inline и multistatement.
Здесь все имеют в виду inline.
Она же может всегда возвращать одну строку, состоящую из одного поля?
Это чтобы напоминала скалярную, я имею в виду.
15 сен 15, 10:46    [18150183]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
iap
Табличные функции бывают двух видов - inline и multistatement.
Здесь все имеют в виду inline.
Она же может всегда возвращать одну строку, состоящую из одного поля?


Да, может.
Те есть создать табличную функцию, которая возвращает один столбец с одним значением. И вызывать эту ф-цию, как обычную скалярную?
15 сен 15, 10:59    [18150238]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
Yagrus2
iap
Табличные функции бывают двух видов - inline и multistatement.
Здесь все имеют в виду inline.
Она же может всегда возвращать одну строку, состоящую из одного поля?


Да, может.
Те есть создать табличную функцию, которая возвращает один столбец с одним значением. И вызывать эту ф-цию, как обычную скалярную?
Почитайте же, наконец, про табличные функции.
Инлайн-функцию называют ещё "параметрическим представлением".
15 сен 15, 11:01    [18150243]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
Не хочу навяхываться (да не, вру, хочу :-)) вот тут немного
15 сен 15, 11:44    [18150413]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Всем спасибо. Инлайн функция помогла.
15 сен 15, 11:55    [18150477]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
o-o
Guest
Yuri Abele
Не хочу навяхываться (да не, вру, хочу :-)) вот тут немного

вы что там хотели сказать-то, что скалярка -- зло или что "и так сойдет"?
загадочная фраза "Yes, it is so and the same time not so" абсолютно не раскрыта.

а еще у вас смешное Table of contents.
сделать бы select distinct, вышло бы наверное 20 тем, а так, наверное, 200.
мне аж показалось, дежа вю у меня сплошное, а все проще:
вместо 1 темы и к ней 20 тэгов, 200 тем с повторениями, но типа по разным категориям
15 сен 15, 12:13    [18150582]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
Yuri Abele
Member

Откуда: Латвия> Литва > Тольятти > Wiesbaden > Karlsruhe
Сообщений: 1661
o-o
вы что там хотели сказать-то, что скалярка -- зло или что "и так сойдет"?
загадочная фраза "Yes, it is so and the same time not so" абсолютно не раскрыта.

А это такая интрига :-)

o-o
а еще у вас смешное Table of contents.
сделать бы select distinct, вышло бы наверное 20 тем, а так, наверное, 200.
мне аж показалось, дежа вю у меня сплошное, а все проще:
вместо 1 темы и к ней 20 тэгов, 200 тем с повторениями, но типа по разным категориям

TOC автоматом генерится. Я готовы add-on взял. Всё руки не дойдут что-то подрехтовать.

P.S. дайти ссылку на Ваш блог - так покритиковать хочется
15 сен 15, 12:41    [18150737]     Ответить | Цитировать Сообщить модератору
 Re: формула  [new]
o-o
Guest
Yuri Abele
P.S. дайти ссылку на Ваш блог - так покритиковать хочется

а я разве лезу сюда с просьбой мое посетить?
критикуйте сюда вываленное, я за день много тут высказываюсь, в том числе и кодом.
+ off
вообще-то можно было и предупредить: хочу отзывы, но только в виде дифирамбов.
мне напрасно ходить по блогам обидчивых неинтересно, например.
да и сравнительный анализ UDF-ов Бен-Гана меня вполне устраивает.

вот лучше делитесь трэйлами на викилоке -- у вас там горы на фоте, да?
15 сен 15, 13:11    [18150898]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить