جلسه هشتم – 7/08/93 script task، unifing data flow

جلسه هشتم – 7/08/93

اگر بخواهیم فایل­های یک فولدر را بخوانیم باید در کامپوننت Foreach Loop مقدار property با عنوان foreach file enumerator را انتخاب نماییم.

مثال: می خواهیم 3 فایل متن را خوانده و یکجا در یک جدول بریزیم.

1.       سه فایل با نام های x1.txt ، x2.txt و x3.txt و با محتوای دالخواه ایجاد می کنیم.

2.       حلقه ای از نوع Foreach و با مشخصات زیر تولید می کنیم. به مقدار Enumerator توجه بفرمایید. متغییر FileName از نوع String بوده و مقدار فایل به همراه مسیر در آن ذخیره می شود.


 

3.       سپس یک عنصر Data Flow Task در حلقه قرار می دهیم، در بخش مربوطه رفته و به ترتیب زیر عمل می کنیم.


4.       هنگام تعریف Flat File Source سیستم یک Connection از نوع Text خواهد ساخت. باید property آنرا گرفته و مقدار Expression را به ترتیب زیر تنظیم کنید.


5.       حال بسته آماده و با اجرا، مقادیر فایل های متن به جدول اطلاعاتی منتقل خواهد شد. (به دلیل سادگی از توضیح بیشتر بخش های متداول صرفنظر شده است.)

Script Task: ابزاری است که با استفاده از آن می­توان یک قطعه کد به زبان C#.Net یا VB.Net را طی اجرای یک Package اجرا نمود.

کاربردها:

·         انجام عملیات خاصی خارج از فضای SSIS

·         مقداردهی یک متغییر در محیط SSIS

Precedence Constraint: خطوط ارتباطی بین  Task ها در محیط Control Flow می­باشد و تعیین کننده توالی انجام عملیات است.

انواع Precedence Constraint:

·         On Success

·         On Failure

·         On Completion

Expression  در precedence constraint : اجرای Task بعدی در صورت تحقق گزاره مورد نظر است.

Forloop Container: با شروط عددی و معمولا برای ساخت حلقه­هایی با تعداد دور ثابت مورد استفاده قرار می­گیرد.

تنظیمات:

·         Init expression: مقداردهی اولیه متغییر شمارنده حلقه است. باید از قبل متغییری تعریف کرده و به آن اختصاص داد

·         Eval expression: شرط ماندگاری در حلقه

·         Assigned expression: تعریف گام حلقه

 

نکات عمومی:

·         از کامپوننت rowcount می توان برای debug کردن و نمایش جدول نتیجه استفاده کرد. با استفاده از آن می توان تعداد سطرهای یک جریان داده را در یک متغییر عددی ذخیره نمود

·         فعال کردن Data Viewer روی خط انتقال داده باعث نمایش جدولی از مقادیر در حال انتقال می­شود (مناسب برای debug)

 

UNIFING Data Flow: یکی کردن جریان­های داده

v      Union All

o        برای تلفیق چند جریان داده استفاده می­شود

o        از نظر سرعت اجرا، سریع است

o        جهت غلبه بر حجم­های سنگین داده از مکانیزم Batch By Batch برای بارگذاری داده­ها استفاده می­کند

o        تعداد سطرهای خروجی این کامپوننت برای جمع هریک از ورودی ها است.

o        تفاوت این کامپوننت با UNION All از نوع TSQL آن است که درصورتی که دو (یا چند) جدول با ستون­های اطلاعاتی مختلف با هم UNION All شوند و فیلدهای یکسان نداشته باشند، خروجی شامل تمامی فیلدهای همه جداول است.


v      Merge

o        می­توان دو جریان داده مرتب شده (sorted) را با یکدیگر تلفیق نمود و یک جریان داده مرتب شده یا sorted ایجاد کرد.

o        از لحاظ سرعت اجرا به دلیل انجام عملیات sort نسبت به union all کندتر است

o        جهت غلبه بر حجم­های سنگین داده از مکانیزم Batch By Batch برای بارگذاری داده­ها استفاده می­کند. علت نیاز به مرتب بودن هم همین است.

o        تعداد سطرهای خروجی با تعداد سطرهای ورودی برابر است

o        اگر بخواهیم که قبل از مرتب کرده باشیم کافی است در source  در بخش Advance Editor و در Input and Output Properties مقدار IsSorted را به True تغییر دهیم.

v      Merge Join

o        می­توان دو جریان داده مرتب شده (sorted) را با یکدیگر تلفیق نمود و یک جریان داده مرتب شده یا sorted ایجاد کرد.

o        جهت غلبه بر حجم­های سنگین داده از مکانیزم Batch By Batch برای بارگذاری داده­ها استفاده می­کند. علت نیاز به مرتب بودن هم همین است.

o        تعداد سطرهای خروجی بسته به نوع Join متفاوت است.


v      Lookup

o        جهت تکمیل و غنی­سازی یک جریان داده با استفاده از یک جریان خارجی داده استفاده می­کنیم.

o        این کامپوننت داده­های جدول مرجع را به­طور کامل در حافظه Data Flow Task بارگذاری می­کند تا با سرعت بهتری بتواند مقادیر مورد نیاز را واکشی نماید. لذا این کامپوننت مناسب سناریوهایی است که جدول مرجع کوچک باشد

o        نوع اتصال جریان داده و داده­های جدول مرجع به صورت equi-join است که حالت خاصی از left outer join باشد.

o        در Equi-join درصورتیکه چندین سطر دیده شود، اولی را برای join انتخاب می­کند

o        انواع خروجی آن

§         Match output: سطرهایی که مقادیر متناظر آن­ها در جدول مرجع وجود دارد

§         No Match output: سطرهایی که مقادیر متناظر آن­ها در جدول مرجع وجود ندارد

·         Fail Component: منجر به تولید خطا می­شود

·         Ignore Failure: از خطا چشم پوشی شده و مقادیر NULL جایگزین مقادیر مورد نظر می­شود

·         Redirect Rows (no match output) : ارسال سطرهای مشکل دار به خروجی no match

·         Redirect Rows (error output) : ارسال سطرهای مشکل دار به خروجی error

Lookup

Merge Join

امکانات

1

2

دارد

2

1

ندارد

تعداد ورودی

تعداد خروجی

خروجی خطا

برروی جریان اصلی محدودیتی ندارد

جدول مرجع حتما باید از نوع relational باشد (SQL  - Oracle – DB2)

محدودیتی ندارد

تنوع Source

Equi-join

انواع join استاندارد را دارد

انواع JOIN

دارد

ندارد

Caching

مناسب برای جریان های داده سنگین با جدول مرجع سبک

مناسب برای جریان داده سنگین

کاربرد