Хобрук: Ваш путь к мастерству в программировании

SSIS — производный столбец против выражения выбора

В DataFlow предположим, что мне нужно получить новый столбец myDate, и значение будет GetDate() или sysdatetime(), что угодно... У меня есть два варианта: Добавить этот столбец в исходный OleDB, выберите, например:

Select 
    col1, col2, ..., getDate() as myDate 
from myTable

или я могу добавить шаг SSIS «Производный столбец» и поместить туда свое выражение getDate().

Какой вариант лучше с точки зрения производительности?


Ответы:


1

Это зависит. Существует тонкая разница между использованием GetDate()/current_timsetamp в вашем запросе и использованием его в производном столбце.

Getdate/current_timestamp в вашем исходном запросе будет оцениваться один раз. Таким образом, ваше значение myDate будет постоянным для всего набора данных. Может быть, это правильно для вашего приложения, может быть, нет.

Использование выражения getdate в производном столбце будет оцениваться каждые N интервалов. Для большого импорта вы можете получить значительный дрейф в стоимости. То есть первая зафиксированная строка имеет 2014-02-06T11:46:00.000, а последняя строка имеет 2014-02-06T15:21:19.762 Опять же, является ли это более желательным поведением, зависит от вас и вашего приложения. Это усложняло запросы, которые мне приходилось писать для сопоставления поведения импорта в нашем DW, поскольку мы могли сопоставлять действия импорта только на основе дат.

Если вы хотите использовать производный столбец, но иметь согласованную контрольную точку, используйте некоторые из переменных пространства имен System. Мы часто использовали @[System::StartTime], но @[System::ContainerStartTime] обеспечило бы время начала, более тесно связанное с началом вашего потока данных.

06.02.2014

2

Делать это в базе данных было бы лучше, поскольку вам не нужно использовать память для создания нового столбца для каждой строки в потоке данных.

06.02.2014

3

Я думаю, было бы лучше, если бы вы сделали это внутри оператора select, а не производного столбца внутри ssis.

06.02.2014
Новые материалы

React on Rails
Основное приложение Reverb - это всеми любимый монолит Rails. Он отлично обслуживает наш API и уровень просмотра трафика. По мере роста мы добавляли больше интерактивных элементов..

Что такое гибкие методологии разработки программного обеспечения
Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...

Ториго  — революция в игре Го
Наш следующий вызов против ИИ и для ИИ. Сможет ли он победить людей в обновленной игре Го? Обратите внимание, что в следующей статье AI означает искусственный интеллект, а Goban  —..

Простое развертывание моделей с помощью Mlflow — Упаковка классификатора обзоров продуктов NLP от HuggingFace
Как сохранить свои модели машинного обучения в формате с открытым исходным кодом с помощью MLFlow, чтобы позже получить возможность легкого развертывания. Сегодня модели упаковки имеют несколько..

Математика и интуиция - Часть 1
У каждой математической формулы есть доказательство. Часто эти доказательства слишком сложно понять, поскольку многие из них основаны на индукции, некоторые - на очень сложных наблюдениях, а..

Раскрытие возможностей НЛП: часть речевой маркировки и ее проблемы
В сфере обработки естественного языка (NLP) маркировка частей речи (POS) выступает в качестве фундаментального метода, позволяющего компьютерам понимать и анализировать человеческий язык на..

Под поверхностью: раскрытие деталей системы с помощью инструментов Linux CLI
Чем больше вы изучаете Linux и продвигаетесь вперед, тем больше вам нужно проверять информацию о вашей системе. Эта информация может касаться аппаратного обеспечения, такого как процессор,..