5/5 - (18 امتیاز)
ترکیب دو کوئری در پاور کوئری یا Power BI، یکی از ابتدایی ترین و البته پرکاربردترین کارهایی است که معمولا در زمینه آماده سازی داده ها انجام میشود. به صورت کلی دو نوع عملیات ترکیب در مورد کوئری ها وجود دارد: Merge و Append

معمولا برنامه نویس های پایگاه داده به خوبی تفاوت این دو گزینه را می دانند اما اکثریت کاربران و استفاده کنندگان از Power BI برنامه نویس نیستند. در این مطلب، تفاوت بین Merge  و Append و البته شباهت های بین آنها را بررسی میکنیم و نشان میدهیم که شما می بایست در چه شرایطی از هرکدام از این دو گزینه استفاده کنید.

پیشنهاد مطالعه: 

در صورتی که با ابزار فوق العاده پاور کوئری(power query) اکسل آشنا نیستید یا قصد تکمیل دانسته های خود در این زمینه را دارید، پیشنهاد میکنیم به صفحه “فیلم و آموزش پاور کوئری در اکسل”  مراجعه کنید.

چرا کوئری ها را ترکیب میکنیم ؟

شاید اولین سوالی که به ذهن شما می رسد این باشد که اصلا چه دلیلی وجود دارد که کوئری ها را ترکیب کنیم؟ دلیل اصلی ترکیب کوئری ها در اکسل و پاور بی آی این است که بسیاری از عملیاتی مورد نیاز در این محیط ها زمانی به خوبی اجرا خواهند شد که اطلاعات ما در یک کوئری واحد قرار داشته باشد. به عبارت دیگر، ممکن است اطلاعاتی که شما در اختیار دارید از واحدها، قسمت ها، سرویس ها و … بسیار متنوعی بدست آمده باشند و شما برای استفاده از آنها می بایست این اطلاعات متنوع و قرار گرفته در کوئری های مختلف را در یک کوئری خلاصه سازی کنید و پردازش های مورد نظر خود را بر روی یک کوئری واحد انجام دهید.

گزینه های Merge و Append در قسمت Combine Queries پاور کوئری(query editor) قابل مشاهده هستند:Append  یا Merge؛ از کدام یک می بایست در پاور کوئری و پاور بی آی استفاده کرد؟

Append

زمانی که از گزینه Append استفاده میکنیم به این معنی است که دو کوئری (یا بیشتر) با شرایط زیر صرفا به هم متصل میشوند و  تبدیل به یک کوئری میشوند:

  • ردیف های تمام کوئری ها به هم متصل میشوند. به این معنی که اگر یک کوئری 50 ردیف و کوئری دیگر 100 ردیف داشته باشد، حاصل استفاده از Append برای این دو، 150 ردیف خواهد داشت.
  • تعداد ستون ها برای هرکدام از کوئری ها بعد از عملیات Append تغییر نخواهد داشت.

حال ببینیم گزینه Append به صورت عملی به چه شکل انجام میشود:

دو مجموعه داده را برای دانش آموزان 2 دوره آموزشی در نظر بگیرید.

اطلاعات دوره 1:

اطلاعات دوره 2:

برای الحاق (Append) این دو کوئری گزینه Append را از قسمت Combine  تب Home کوئری ادیتور انتخاب کنید.Append  یا Merge؛ از کدام یک می بایست در پاور کوئری و پاور بی آی استفاده کرد؟

در صورتی که میخواهید دو کوئری موجود به همین شکل باقی بماند و یک کوئری جدید برای اتصال این دو ایجاد شود، Append Queries as New را انتخاب کنید. در غیر اینصورت، Append Queries را انتخاب کنید. در این مثال ما از گزینه Append Queries as New استفاده میکنیم تا کوئری های مربوط به هر دوره بدون تغییر باقی بماند.

شما میتوانید شبیه به تصویر زیر، primary table(جدول اولیه) و جدولی که می بایست به آن متصل شود را انتخاب کنید. همچنین تعداد کوئری هایی که میخواهیم به هم متصل کنیم نیز از همین قسمت قابل انتخاب است.Append  یا Merge؛ از کدام یک می بایست در پاور کوئری و پاور بی آی استفاده کرد؟

گزینه Append صرفا ردیف های کوئری ها را پشت سرهم قرار میدهد و از آنجایی که نام ستون ها در هر دو کوئری دقیقا شبیه به هم هستند، نتیجه کار نیز صرفا به اندازه کوئریهای اولیه، ستون خواهد داشت.Append  یا Merge؛ از کدام یک می بایست در پاور کوئری و پاور بی آی استفاده کرد؟

نتیجه Append از نگاهی دیگر :

سرنوشت مقادیر تکراری چه خواهد شد؟

Append queries مقادیر تکراری را حذف نخواهد کرد. در این صورت شما می بایست برای حذف مقادیر تکراری از خاصیت های Remove duplicate یا Group By اکسل استفاده کنید.

در صورتی که ستون های کوئری های اولیه به یک شکل نبودند، چه اتفاقی رخ خواهد داد؟

برای اینکه Append به بهترین شکل انجام شود، می بایست ستون های کوئری های اولیه دقیقا به یک شکل باشند. در غیر این صورت اگرچه Append  انجام خواهد شد ولی به ازای هر ستون جدید، یک ستون در کوئری نهایی ایجاد خواهد کرد و چون بقیه  کوئری ها برای این ستون مقداری نخواهند داشت، مقدار null را برای آن کوئری قرار خواهد داد.

Merge

یکی دیگر از شیوه های ترکیب کوئری ها، استفاده از گزینه Merge یا ادغام کوئری هاست. در نتیجه ادغام نیز یک کوئری واحد ایجاد خواهد شد، البته با شرایط زیر:

  • برای ادغام (Merge) دو کوئری می بایست یک معیار مشترک بین دو کوئری وجود داشته باشد. برای مثال در نمونه استفاده شده در بالا، ستون StudentId درهر دو کوئری یکسان است.
  • تعداد ردیف ها، بستگی به معیار مشترک بین کوئری ها خواهد داشت.

فهم عملیات Merge ممکن است نسبت به Append کمی پیچیده تر به نظر برسد ولی زمانی که به صورت عملی این کار را انجام دهید، متوجه خواهید شد که هیچ پیچیدگی وجود ندارد. به مثال زیر توجه کنید:

فرض کنید علاوه بر دو جدول مطرح شده در نمونه قبل، جدول زیر را نیز که مربوط به جزییات دوره های آموزشی است ، در اختیار داریم:Append  یا Merge؛ از کدام یک می بایست در پاور کوئری و پاور بی آی استفاده کرد؟

حال فرض کنید، میخواهیم کوئری بالا را با کوئری بدست آمده از عملیات Append در مثال قبل با هم ترکیب کنیم تا نشان دهیم که هر دانش آموز در کدام یک از دوره ها قرار دارد و تمام جزییات را در هر ردیف نمایش دهیم. برای انجام این کار از Merge  استفاده میکنیم. کوئری الحاق شده در مثال قبل( Append 1) به شکل زیر است:

کوئری Course (مربوط به دوره های آموزشی) را ابتدا انتخاب کنید و بعد گزینه merge query را بزنید.

برای ادغام کوئری ها همانطور که قبلا اشاره شد، نیاز به یک عامل مشترک دارد. منظور عامل مشترک، فیلد یا فیلدهایی است که در تمام کوئریها یکسان باشد و عملیات ادغام بر اساس آن انجام شود. در این مثال میخواهیم کوئری Course را با کوئری Append 1 بر اساس ستون title با هم ادغام (merge) کنیم.

جدول ها و ستون های مشترک را انتخاب کنید.Append  یا Merge؛ از کدام یک می بایست در پاور کوئری و پاور بی آی استفاده کرد؟

در مورد انواع مختلف merge در قسمت بعد صحبت میکنیم. فعلا، بر اساس شکل بالا، گزینه ها را انتخاب کنید. مشاهده خواهید کرد که این دو کوئری بر اساس عنوان دوره با هم مشترک هستند. کوئری نتیجه شده شبیه به کوئری اول(در این مثال course) است با این تفاوت که یک ستون جدید با نام newcolumn ایجاد شده و عبارت table  در آن نوشته شده است. این ستون، ستونی ساختاریافته است که در صورتی که بر روی عبارت table در هرکدام از سلول ها کلیک شود، جدول مربوط به آن نمایش داده میشود.

حال بر روی آیکن ستون newcolumn کلیک کنید تا تمام جدول های قرار گرفته در آن نمایش داده شود.

نتیجه کار جدولی است که شامل ستون های هر دو جدول قبل و ردیف های مطابق با یکدیگر است.

ستون های سمت چپ، از جدول  Course و ستون های سمت راست از جدول مربوط به دانش آموزان ناشی میشوند. سه ردیف اول، دانش آموزان دوره ریاضی(math) و سپس دو دانش آموز دوره English نمایش داده شده اند. و از آنجایی که دوره physic هیچ دانش آموزی ندارد، مقادیر null در ستون Students قرار می گیرد.

انواع روش های merge( گزینه join kind)

زمانی که عملیات merge را انجام میدهید، 6 روش از منو join kind قابل انتخاب است. توضیح کاری که هر کدام از این روش ها انجام میدهند، خود نیازمند یک مطلب جداگانه و مفصل است. اما برای آشنایی کلی با هرکدام از این روش ها، تلاش کردیم به صورت تصویری هرکدام از آنها را نمایش دهیم:

[/vc_column_text][/vc_column][/vc_row]

فیلم و دوره رایگان آموزش پاور کوئری در اکسل و پاور بی آی

مشترک شدن
Notify of
guest

3 نظرات
نظردهی درون متنی
مشاهده همه نظرات
ساره

باسلام و احترام
برخودم واجب میدونم که یه تقدیر و تشکر ویژه از شما داشته باشم. واقعا آموزشهاتون مفید و موثر هستن.

امیر دایی

ممنون لطف دارید. موفق باشید.

زهرا

عالی