Елементи пакетів служби інтеграції – ЧАСТИНА 6

Перетворення

Знаходячись між джерелом і приймачем, елементи перетворення забезпечують трансформацію даних з того, що було прочитано з джерела, в те, що насправді необхідно Будь трансформація вимагає на вході один або декілька потоків даних і забезпечує на виході інформацією один або кілька приймачів або інших елементів перетворень Подібно джерел і приймачів, багато перетворення реалізують деякий метод конфігурування потоку рядків, перетворення яких завершилося помилкою Багато елементів перетворення забезпечені стандартними і розширеними редакторами, що дозволяють конфігурувати компонент, при цьому в базовому редакторі доступні звичайні конфігурації

Стандартні перетворення, доступні в завданні потоку даних, описані нижче

■ Aggregate Подібно пропозицією GROUP BY в мові SQL, дозволяє генерувати максимальне, мінімальне, середнє і інші підсумкові значення з потоку даних Зважаючи на свою природи перетворення Aggregate не впроваджується в потік, а дає результат у вигляді консолідованих рядків Робота з цим елементом починається у вкладці Aggregations, де вибираються консолідованих стовпці Якщо необхідно включити декількох копій одного й того ж стовпця, потрібно клацнути на ньому кілька разів на нижній панелі Потім для кожного з обраних стовпців задається вихідна імя (Output Alias), виконувана операція (наприклад, Group by, Count і тп) і будь прапори порівняння (наприклад, Ignore case) Для різних стовпців можуть задаватися різні параметри продуктивності у вигляді або точних (Distinct Count Keys), або приблизних чисел (Distinct Count Scale) Ці значення підраховують кількість різних (тобто унікальних) преутворених значень Передбачається кілька діапазонів

• Low Приблизно 500 тисяч значень

• Medium Приблизно 5 мільйонів значень

• High Приблизно 25 мільйонів значень

Аналогічні параметри можуть бути задані і для стовпців, по яких виконується угрупування (Group by) Для цього слід розгорнути розділ Advanced вкладки Aggregations і ввести точне (Keys) або приблизне (Keys Scale) число різних значень, що піддаються обробці Як альтернатива ключі продуктивності можуть бути задані у вкладці Advanced для всього компонента, включаючи обсяг виділеної розширеної памяті, якщо така буде потрібно

■ Audit Додає в потік даних стовпці контексту виконання, дозволяючи записувати інформацію аудиту (звідки і коли надійшла інформація) безпосередньо в дані Доступні наступні стовпці: PackageName, VersionID, ExecutionstartTime,

MachineName, UserName, TaskName і Taskld

Character Map Дозволяє рядках потоку даних бути перетвореними за допомогою цілого ряду операцій: Byte reversal, Full width, Half width Hira-gana, Katakana, Linguistic casting, Lowercase Simplifyed Chineese і Uppercase У редакторі виберіть стовпець, який підлягає перетворенню, додаючи його за допомогою нижній панелі необхідну кількість разів Далі для кожного стовпчика вказується пункт призначення: новий стовпець (New column) або заміна поточного шпальти (Inplace change) Після цього виберіть операцію для змінюваного шпальти

Conditional Split Дозволяє рядках потоку даних розділятися між різними результатами в залежності від їх вмісту Елемент конфігурується шляхом введення виразів і результуючих імен в редакторі Коли цей елемент перетворення отримує рядок, кожне з виразів обчислюється по порядку, і перше з них, яке виявиться істинним, отримає рядок даних Якщо ні один з виразів не опиниться істинним, то цей рядок отримає результат, призначений за замовчуванням (його імя вводиться в нижній частині редактора) Після конфігурування при підключенні потоку даних відкривається спливаюче вікно вибору вихідного потоку, в якому користувачеві доведеться провести вибір Чи не відображені результати ігноруються, що може призвести до втрати даних

Copy Column Додавання в потік даних копії існуючого стовпця У редакторі виберіть копійовані стовпці, додаючи в міру необхідності кілька копій з допомогою нижній панелі Кожному новому стовпцю згодом слід присвоїти відповідне імя (Output Alias)

Data Conversion Додавання в потік даних копії стовпця з перетворенням типу даних (при необхідності) У редакторі виберіть преутворені стовпці, створюючи у міру потреби декілька їх копій Кожному новому стовпцю необхідно присвоїти відповідне імя і тип даних: при цьому перетворення кодових сторінок не допускаються При використанні розширеного редактора можна активізувати незалежний від регіональних налаштувань алгоритм прискореного розбору рядків Для цього потрібно встановити для параметра Fast Parse значення true

Data Mining Query Запускає запит DMX для кожного рядка потоку даних, дозволяючи рядках бути асоційованими з передбаченнями (наприклад, визначення ймовірності того, що новий замовник здійснить покупку) Конфігурування виконується шляхом вибору диспетчера підключень Analysis Services, структури розкриття даних і моделі розкриття, до якої буде виконуватися запит У вкладці Query клацніть на кнопці Build New Query і відобразіть стовпці потоку даних на стовпці моделі (за замовчуванням відображення грунтується на іменах стовпців) Потім в нижній частині панелі виберіть стовпці, що додаються в потік, і надайте вихідному потоку відповідне імя (Alias)

Derived Column Використання виразів для генерування значень, які можуть бути або додані в потік даних, або замінити значення в існуючих стовпцях У редакторі спроектуйте вираження служби інтеграції, при необхідності використовуючи перетворення типів даних Визначте, чи будуть нові значення заміщати існуючі стовпчики чи формувати новий стовпець Присвойте новому стовпцю підходяще імя та тип даних

Export Column Запис особливо великих типів даних (DT_TEXT, DT_NTEXT або DT_ IMAGE) у файл, який визначається імям, що міститься в потоці даних Наприклад, великі текстові обєкти можуть вилучатись в різні файли для включення в Web-сайт або індексації У редакторі виберіть по два стовпці для кожного визначається вилучення: стовпець з великими даними і стовпець, що містить імя файлу Один файл може отримати будь-яку кількість обєктів – для визначення режиму приміщення даних у файли визначте параметр Append / Truncate / Exists

Fuzzy Grouping Ідентифікація дубльованих рядків у потоці даних з використанням точного порівняння для будь-яких типів даних і нечіткого порівняння для строкових даних типів DT_STR і DT_WSTR Дане завдання конфигурируется із зазначенням ключових стовпців потоку даних, на основі яких визначається унікальність В якості результату цього перетворення у вихідний потік може бути додано кілька стовпців

• Вхідний ключ (імя за замовчуванням – _key_in) Послідовний номер, призначений для ідентифікації кожної що входить рядка

• Вихідний ключ (імя за замовчуванням – _key_out) Ключ _key_in рядки, з якою дана рядок збігається, або її власний ключ _key_in, якщо збігів не знайдено Одним із способів виключення з потоку даних дублюються рядків є звязування цього компонента з елементом Conditional Split, в якому задана умова [_key_in] == [key_out]

• Міра подібності (імя за замовчуванням – name_score) Міра подібності всього рядка (у діапазоні від нуля до одиниці) перший рядку безлічі дублікатів

• Груповий висновок (імя за замовчуванням-<стовпець> _clean) Для кожного обраного ключового стовпця це значення з першого рядка набору дублікатів (тобто значення з рядка, на яку вказує ключ _key_out)

• Схожий висновок (імя за замовчуванням – Similarity_ <стовпець>) Для кожного обраного ключового стовпця це його міра подібності по відношенню до першої рядку набору дублікатів

У редакторі виберіть диспетчер підключень OLE DB, де перетворення буде мати дозволу на створення тимчасової таблиці Після цього налаштуйте всі ключові стовпці, призначаючи їм імена звичайного, групового і східного виводу На додаток для кожного стовпця визначте наступні параметри

• Match Туре Для кожного строкового стовпця виберіть між точним (Exact) і нечітким (Fuzzy) порівнянням (Для стовпців інших типів завжди використовується точне порівняння)

• Minimum Similarity Найменша міра подібності, допустима для прийняття рішення про відповідність рядків Якщо в шпальтах, в яких виконується нечітке порівняння, залишити значення 0 (нуль), подоба буде управлятися повзунком у вкладці Advanced редактора

• Numerals Визначте, чи повинні предваряющие і прикінцеві нулі і прогалини братися до уваги при порівнянні Прийняте за замовчування значення Neither припускає, що це не так

• Comparison Flags Виберіть установки, що відповідають типу порівнюваних рядків

Fuzzy Lookup Аналогічно перетворенню Lookup, за винятком випадку, коли чіткий пошук завершується невдачею, нечіткий намагатиметься виконати пошук у всіх строкових стовпцях (DT_STR і DT_WSTR) Визначте диспетчер підключень OLE DB і імя таблиці, в якій буде виконуватися пошук, а також новий або існуючий індекс, який буде використаний для кешування інформації про нечіткому пошуку У вкладці Columns визначте відносини між потоком даних і таблицею, на яку зроблено посилання, а також те, які стовпчики таблиці будуть додаватися в потік даних У вкладці Advanced виберіть міру подоби, по досягненні якої буде прийматися рішення про відповідність Чим менше це число, тим більш ліберальним буде пошук На додаток до заданих стовпцях будуть додаватися наступні метадані

• Similarity Звіт про подібність всіх порівнюваних значень

• Confidence Звіт про рівень правдоподібності того, що вибране відповідність є коректним, у порівнянні з іншими можливими відповідниками в таблиці класифікаторів

• Similarity_ <ім'я_стовпця> Подоба кожного окремого стовпця

Розширений редактор дозволяє додатково встановити для кожного стовпця параметри MinimumSimilarity і FuzzuComparisonFlags

Import Column Читання обєктів великих типів даних (DT_TEXT, DT_NTEXT і DT_IMAGE) з файлу, що визначається імям, що містяться в потоці даних, з додаванням тексту або зображень в новий стовпець потоку даних Цей елемент конфігурується в розширеному редакторі При цьому у вкладці Input Columns ідентифікується стовпець, що містить імена файлів Після цього у вкладці Input and Output Properties створюється новий вихідний стовпець для кожного стовпця імен файлів, в який будуть заноситися всі прочитані дані Присвойте новим стовпцях відповідні імена і типи даних Запамятайте у властивостях стовпця недоступний параметр ГО і знайдіть параметри відповідного вхідного стовпця з імям файлів Встановіть значення параметра FileDataColumnID вхідного стовпця в значення ідентифікатора ID вихідного стовпця, щоб звязати воєдино стовпці імені файлу та вмісту Також встановіть для властивості ExpectBOM значення true для всіх даних з типом DT_NTEXT, що підлягають прочитуванню, які записувалися з маркерами порядку байтів

Lookup Пошук рядків у таблиці бази даних, що збігаються з потоком даних, і включення її вибраних стовпців в потік – щось на зразок обєднання між потоком даних і таблицею Наприклад, ідентифікатор товару може бути доданий в потік за допомогою виконання пошуку в класифікаторі товарів за назвою Ідентифікуйте диспетчер підключень OLE DB і посилання на таблицю, подання або запит, які будуть брати участь у пошуку У вкладці Columns встановіть відповідності між стовпцями потоку даних і таблиці класифікаторів, перетягуючи лінії між відповідними елементами Після цього виберіть стовпчики таблиці класифікаторів, які повинні бути додані в потік даних, змінюючи при необхідності на нижній панелі їхні імена

У вкладці Advanced ви можете оптимізувати продуктивність памяті перетворення Lookup За замовчуванням вся таблиця класифікаторів зчитується в память на початку перетворення для мінімізації операцій введення-виведення, що на практиці може віднімати досить багато часу при роботі з великими таблицями Встановіть прапорець Enable Memory Restrictions, щоб кешувати тільки частину таблиці, а потім встановіть розмір кеша, відповідний для того кількості рядків, які ви хочете завантажувати в одному пакеті Якщо для набору даних ефективніша інша форма, можна також модифікувати інструкцію SQL

Merge Комбінує рядки двох відсортованих потоків даних в єдиний потік Наприклад, якщо деякий потік рядків розділений помилковими рядками або компонентом перетворення Conditional Split, його можна знову зєднати В обох вищестоящих потоках повинна бути виконана сортування за одним і тим ж ключі-

вим стовпцях, а типи даних зливаних стовпців повинні бути сумісні Конфігурація виконується за допомогою перетягування двох різних входів до елементу злиття і відображення стовпців в редакторі Комбінування невідсортованих потоків даних виконується елементом Union All

■ Merge Join Реалізує функціональність оператора JOIN мови SQL для потоків даних, відсортованих по стовпцях обєднання Конфігурування виконується перетягуванням входів до елементу, однак при цьому слід приділяти увагу тому, який з входів знаходиться зліва, а який праворуч (цей буде істотно для зовнішніх обєднань) Вибір типу обєднання виконується в редакторі Там же слід встановити відображення обєднуються стовпців і вибрати стовпці, які будуть спрямовані на вихід

■ Multicast Копіювання всіх рядків вхідного потоку даних в безліч вихідних Як тільки один з виходів підключається до деякого компоненту, тут же зявляється наступний вихід, доступний для підключення Конфігуруються тільки імена виходів

■ OLE DB Command Виконання інструкції SQL (типу UPDATE або DELETE) для всіх рядків потоку даних Конфігурування виконується визначенням диспетчера підключення OLE DB Далі слід перейти до вкладки Component Properties і ввести інструкцію SQL, використовуючи символи знаків питання для параметрів (наприклад, UPDATE MyTable SET Coll = WHERE С12 =) У вкладці Column Mappings асоціюйте стовпці потоку даних з параметрами інструкції SQL

■ Percentage Sampling Поділ рядків потоку даних випадковим чином на основі введеного процентного співвідношення щільності вихідних потоків Наприклад, цей елемент може використовуватися для розділення потоку на безлічі для навчання і тестування елемента розкриття даних У редакторі вкажіть приблизний відсоток для виходу Selected-інші рядки будуть спрямовані на вихід Unselected Якщо на вхід подається один і той же потік даних, то дане перетворення відбере один і той же набір рядків

■ Pivot Денормализация потоку даних, аналогічно тому, як працюють перехресні (зведені) таблиці програми Excel, переносячи значення атрибутів в стовпці Наприклад, потік даних з трьома стовпцями, Quarter (квартал), Region (регіон) і Revenue (дохід), можна розгорнути так, що стовпцями виявляться Quarter, Western Region (західний регіон) і Eastern Region (східний регіон), тобто потік буде розгорнуто по регіонах

■ Row Count Підрахунок кількості рядків у потоці даних і приміщення результату в змінну Конфігурується шляхом заповнення поля імені змінної (VariableName)

■ Row Sampling Цей елемент практично ідентичний перетворенню Percentage Sampling, за виключення того, що вводиться кількість рядків, які повинні потрапити у вибірку, а не їх відсоток

■ Script Перетягніть компонент сценарію в робочу область конструктора, вибравши в діалоговогом вікні тип компонента Transformation У редакторі виділіть ті стовпці, які будуть доступні в сценарії, при цьому розділяючи їх на доступні тільки для читання (Readonly) і доступні для читання і запису (ReadWrite) У вкладці Inputs and Outputs додайте стовпці виходу, які будуть заповнюватися сценарієм, вище і нижче вхідних стовпців

На сторінці редактора Script вкажіть змінні, доступні для читання, а також для читання і запису в сценарії, розділивши їх комами в параметрах ReadOnlyVariables

і ReadWriteVariables відповідно Залиште для параметра PreCornpiie значення true, як запропоновано за замовчуванням, якщо, природно, вас не тривожить розмір пакету на диску Клацніть на кнопці Script, щоб розкрити сам програмний код Зауважимо, що первинний метод заміщає метод <імя_входа> __Process Input Row як показано в наступному прикладі:

Public Class ScriptMain

Inherits UserComponent

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As InputOBuffer)

‘Система джерела відзначає відсутність дат, вставляючи старі дати If RowTransactionDate < # 1/1/2000 # Then Row.TransactionDate_IsNull = True Row.PrimeTimeFlag_IsNull = True Else

‘Встановлення прапора виконання транзакції в робочий час If Weekday (RowTransactionDate)> 0 _

And Weekday(RowTransactionDate) &lt 6 _

And RowTransactionDateHour &gt 7 _

And RowTransactionDateHour &lt 19 Then RowPrimeTimeFlag = True Else

RowPrimeTimeFlag = False End If End If End Sub End Class

У цьому прикладі використовується один вхід, доступний для читання і запису (TransactionDate), і один вихід (PrimeTimeFlag), а імя входу залишено, як прийнято за замовчуванням (Input 0) Кожен стовпець представляється як властивість обєкта Row і доповнюється суфіксом _IsNull для тестування і установки порожнього значення Ця процедура викликається для кожного рядка потоку даних

Slowly Changing Dimension Порівняння даних в потоці з таблицею вимірювань і формування вимірювання на основі ролей, призначених конкретним стовпцях Цей компонент незвичайний тим, що не має редактора Замість нього запускається майстер, що дозволяє послідовно визначити ролі стовпців і взаємодія з таблицею вимірювань В результаті виконання майстра безліч компонентів буде поміщено в робочу область конструктора для виконання завдання обслуговування вимірювання

Sort Сортування рядків потоку даних за обраними стовпцях Конфігурація здійснюється вибором відповідних рядків Після цього на нижній панелі виберіть тип сортування, її порядок і встановіть прапорці, відповідні сортируемое даними

Term Extraction Створення нового потоку даних, заснованого на термінах, знайдених в текстовому стовпчику з кодуванням Unicode (з типом даних DT_WSTR або DT_ NTEXT) Такий потік застосовується при розкритті даних, коли рядки конкретного типу використовуються для генерації списку часто використовуваних термінів Згодом ці терміни можуть використовуватися в компоненті Term Lookup для ідентифікації східних рядків Наприклад, текст збереженого документа RSS може бути використаний для пошуку схожих документів у великому наборі Для конфігурації слід вибрати стовпець, що містить текст з кодуванням Unicode Якщо створений список виключаються термінів, ідентифікуйте відповідні таблицю і стовпець у вкладці Exclusions Вкладка Advanced управляє алгоритмом вилучення серед іншого

визначається, чи повинно слово бути одиночним або перебувати у складі фрази (артиклі, займенники та інші службові частини мови ніколи не включаються), алгоритм підрахунку, мінімальна частота, необхідна для вилучення, і максимальна довжина фрази

■ Term Lookup Виконання своєрідного обєднання стовпця потоку даних з текстом Unicode з таблицею термінів, створеної компонентом Term Extraction Для кожного збігається терміна створюється рядок у вихідному потоці даних Вихідний потік також містить два додаткових стовпці: Term і Frequency У першому з них міститься шаблон з таблиці зіставлення, а в другому – кількість входжень даного шаблону в рядок стовпця потоку даних Це перетворення конфігурується визначенням диспетчера підключень OLE DB і таблиці, містить список термінів У вкладці Term Lookup вибираються вхідні стовпці, що проходять через компонент для формування вихідного потоку Після цього на верхній панелі визначається відповідність між стовпцем вхідного потоку і стовпцем Term таблиці термінів

■ Union All Цей компонент комбінує кілька вхідних потоків даних в єдиний вихідний при цьому потрібна сумісність типів відповідних стовпців Конфігурування здійснюється за допомогою підключення всіх вхідних потоків, що беруть участь у формуванні вихідного Після цього виконується відображення стовпців кожного з вхідних потоків на стовпці вихідного

■ Unpivot Нормалізація потоку даних за допомогою перетворення стовпців в значення атрибутів Наприклад, потік даних з одним рядком для кожного кварталу і стовпцями обсягу доходів по кожному з регіонів може бути перетворений у вихідний потік з трьома стовпцями: номери кварталу, регіону та обсягу доходів

Джерело: Нільсен, Пол Microsoft SQL Server 2005 Біблія користувача : Пер з англ – М: ООО ІД Вільямс , 2008 – 1232 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*