خانه / آموزش Microsoft BI / درس بیست و سوم – کانتینر (Container) چیست؟

درس بیست و سوم – کانتینر (Container) چیست؟

کانتینر (Container) چیست؟

در این درس ، در قالب یک مثال به تعریف کانتینر و انواع آن میپردازیم.

فرض کنید میخواهیم داده ها را از دیتابیس هایی با ساختار یکسان در شهر های مختلف بخوانیم و در یک مقصد قرار دهیم.

وارد Data Flow شده و OLE DB Source قرار میدهیم اما نمیخواهیم به ازای هر شعبه یک سورس قرار دهیم. بلکه میخواهیم یک سورس قرار دهیم و کانکشن آن سورس را به صورت پارامتریک در بیاوریم.

برای این کار نیاز به تیبلی داریم که شامل اسامی دیتابیس هایی باشد که قصد اتصال به آنها را داریم.

وارد سورس میشویم و به یکی از دیتابیس های شعب متصل میشویم و تیبل مورد نظر مان را هم انتخاب میکنیم. اما چیزی که اینجا داریم یک کانکشن ثابت و Non-Parametric است.

حال باید متغیری بسازیم به نام DbName از نوع String که نام دیتابیس هایی که میخواهیم به آن ها کانکت شویم را داخلش نگهداری کنیم.

در قسمت Connection Managers ، روی کانکشن راست کلیک کرده و وارد Properties میشویم. در این قسمت وارد Expressions میشویم.

در پنجره ای که برایمان باز میشود ، Property را روی Initial Catalog قرار میدهیم. Expressions را انتخاب میکنیم و پنجره Expression Builder برای ما باز میشود. داخل بخش Expression را مانند تصویر پر میکنیم.

عکس 43:17

حال میخواهیم به پکیج بفهمانیم که پس از اینکه نام اولین دیتابیس را در Initial Catalog قرار داد و به آن وصل شدیم و دیتای آن را در مقصد قرار دادیم ، به سراغ رکورد بعدی برود و نام دیتابیس دوم را بخواند و به ان متصل شود. برای این کار در قسمت Control Flow  از Execute Sql Task استفاده میکنیم و بخش Result Set را روی Full result set قرار داده و کانکشن آن را مشخص میکینم و در قسمت SQL Statement کد SELECT ای که خروجی اش نام تمام دیتابیس هایی است که میخواهیم به آنها متصل شویم را قرار میدهیم. حال وارد قسمت Result Set میشویم و گزینه Add را میزنیم. Variable Name را روی Variable ای که قصد داریم نام دیتابیس ها را ذخیره کند قرار میدهیم.

عکس 57:32

حال باید یک ساختار تکرار داشته باشیم که روی این لیستی که از نام دیتابیس ها داریم loop بزند.

در اینجا با مفهوم جدیدی آشنا میشویم به نام Container.

Container شی ای است که میتواند در بر گیرنده تعدادی از اشیا در محیط Control Flow باشد.

مزایا :

۱- امکان دسته بندی منطقی بر روی اشیا ، زمانی که تعداد اشیا زیادی داریم.

۲- امکان تعریف متغیر در حوزه کانتینر که از نظر مصرف حافظه بهتر میباشد.

۳- امکان انتخاب روش های متفاوت برای مدیریت تراکنش ها به ازای هر کانتینر.

۴- امکان ایجاد حلقه در برخی از کانتینر ها.

انواع Container :

–  Sequence Container

– For Loop Container

-Foreach Loop Container

Sequence Container ، مزایای ۱ و ۲ و ۳ را شامل میشود.

Forloop Container : مزایای ۱ و ۲ و ۳ و ۴ را شامل میشود و قابلیت ایجاد حلقه با تکرار مشخص را برای ما دارد.

Foreach Loop Container : مزایای ۱ و ۲ و ۳ و ۴ را شامل میشود و قابلیت ایجاده حلقه بر روی لیست یا به تعداد اشیا. مثلا فایل های داخل یک فولدر.

حال به به Task برمیگردیم. اینجا قصد داریم روی رکورد های دیتابیس پیمایش داشته باشیم و نام هر یک را به متغیرمان Assign کنیم. در نتیجه باید از Foreach Loop Container استفاده کنیم.

عکس 1:11:04

کانتینر را باز کرده و به قسمت Collection میرویم. Enumerator را روی Foreach ADO Enumerator قرار میدهیم و ADO Object source variable را روی نام متغیرمان قرار میدهیم.

در قسمت Variable Mapping تعیین میکنیم در هر دور از اجرای حلقه مقادیر ستون ها با شماره اندیسی که از ۰ شروع میشود در چه متغیری ذخیره شوند.

حال Data Flow Task را داخل کانتینر را قرار میدهیم و پکیج را اجرا میکنیم.

عکس 1:21:39

حال فرض کنید میخواهیم از پارامتر ها در حین اجرای SQL Command استفاده کنیم.

کوئری زیر را نوشته :

عکس 1:24:40

سپس دکمه  Parameters را زده.

عکس 1:25:26

عکس 1:25:44

و به همین صورت سایز را هم با عدد ۴۴ مقدار دهی میکنیم و خروجی این کوئری را به کامپوننت Excel Destination وصل میکنیم و پکیج را اجرا میکنیم.

نتیجه به شکل زیر میباشد :

عکس 1:30:06

درباره‌ی علیرضا حسن نژاد

همچنین ببینید

Deploy کردن Tabular Data Model

درس بیست و نهم – Deploy کردن Tabular Data Model

Deploy کردن Tabular Data Model فرض کنید طراحی دیتا مدل به اتمام رسید. حال میخواهیم …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

معادله امنیتی (فقط عدد بنویسید) *