مدل جدولی (Tabular model) در پاور بی ای
Power BI و خدمات تحلیلی بر یک مدل معنایی مبتنی بر مدل شیء جدولی (TOM) تکیه دارند.
اگرچه ابزارهای مختلفی برای دستکاری این مدلها وجود دارد – ما استفاده از ویرایشگر جدولی را پیشنهاد میکنیم – مفاهیم اساسی یکسان هستند زیرا موتور و مدل داده یکسان هستند: ما آن را مدل جدولی مینامیم.
این مقاله بر اساس بخشی از راهنمای قطعی DAX (ویرایش دوم) و انواع مختلف روابط چند به چند در Power BI است.
در یک مدل جدولی (Tabular model) ، یک رابطه فیزیکی دو جدول را از طریق یک معادل در یک ستون واحد به هم متصل می کند.
تحت شرایط خاصی که بعداً توضیح خواهیم داد، یک رابطه می تواند محدودیتی را برای محتوای جدول تعریف کند، حتی اگر چنین محدودیتی با «محدودیت کلید خارجی» که بسیاری از توسعه دهندگان SQL به آن عادت دارند، متفاوت باشد.
با این حال، هدف از رابطه در یک مدل جدولی، انتقال یک فیلتر در حین پرس و جو از مدل است.
از آنجایی که انتقال فیلتر با نوشتن کد DAX نیز امکان پذیر است، دو دسته از روابط را تعریف می کنیم:
- روابط مجازی: اینها روابطی هستند که در مدل داده تعریف نشده اند اما در مدل منطقی قابل توصیف هستند. روابط مجازی از طریق عبارات DAX پیاده سازی می شوند که زمینه فیلتر را از یک جدول به جدول دیگر منتقل می کنند. یک رابطه مجازی میتواند به بیش از یک ستون متکی باشد و میتواند به یک عبارت منطقی مرتبط باشد که فقط یک هویت ستون نیست. از روابط مجازی می توان برای تعریف روابط چند ستونی و روابط بر اساس یک محدوده استفاده کرد.
- روابط فیزیکی: اینها روابطی هستند که در یک مدل جدولی تعریف شده اند. موتور به طور خودکار زمینه فیلتر را در یک پرس و جو با توجه به جهت فیلتر رابطه فعال منتشر می کند. روابط غیر فعال نادیده گرفته می شوند، اما توابع DAX وجود دارند که می توانند وضعیت و جهت فیلتر روابط فیزیکی را دستکاری کنند: USERELATIONSHIP و CROSSFILTER.
در این مقاله ابتدا روابط مجازی را نشان می دهیم. سپس انواع مختلف روابط فیزیکی را به تفصیل مورد بحث قرار می دهیم .
همچنین مفهوم روابط محدود را معرفی می کنیم. در نهایت، ما روابط چند به چند را معرفی میکنیم، انواع مختلف روابط چند به چند موجود در یک مدل و در Power BI را توصیف میکنیم,
بنابراین تفاوتهای بین گزینههای موجود را روشن میکنیم و به طور خلاصه در مورد مفاهیم عملکرد بحث میکنیم.
روابط مجازی
یک رابطه مجازی فیلتری است که در یک تابع CALCULATE یا CALCULATETABLE به زمینه فیلتر اعمال می شود. برای انتشار فیلتر از A به B، باید مقادیر فعال در زمینه فیلتر را در A بخوانید و فیلتر مربوطه را به B اعمال کنید.
به عنوان مثال، تصور کنید که باید فیلتر را از مشتری به فروش منتقل کنید. بهترین راه برای انجام این کار استفاده از TREATAS است:
تابع TREATAS همچنین می تواند یک رابطه منطقی بر اساس چندین ستون پیاده سازی کند. به عنوان مثال، کد زیر با استفاده از شماره سفارش و شماره خط سفارش، فیلتر را از یک جدول فروش به یک جدول تحویل منتقل می کند:
توجه: ایجاد یک رابطه مجازی بر اساس چندین ستون از نقطه نظر عملکرد بهینه نیست. یک رابطه فیزیکی و تک ستونی مرتباً سریعتر از یک رابطه مجازی است.
از آنجایی که TREATAS یک عملکرد نسبتاً جدید است، تکنیک های رایج دیگری نیز برای پیاده سازی روابط مجازی مورد استفاده قرار می گیرد.
ما این گزینه ها را به عنوان مرجع درج می کنیم. به یاد داشته باشید که TREATAS روش ترجیحی برای ایجاد یک رابطه مجازی بر اساس معادل ستون است.
اولین تکنیک جایگزین استفاده از INTERSECT است:
تکنیک جایگزین دوم استفاده از IN است:
روش جایگزین دیگر استفاده از FILTER و CONTAINS است که قدیمی تر و کندتر از INTERSECT است:
یک رابطه مجازی می تواند بر اساس یک محدوده باشد، مانند تکنیک مورد استفاده برای اجرای یک بخش بندی پویا:
روابط فیزیکی
یک رابطه می تواند منظم یا محدود باشد. در یک رابطه منظم، موتور می داند که یک طرف رابطه حاوی مقادیر منحصر به فردی است.
اگر موتور نتواند بررسی کند که یک طرف رابطه دارای مقادیر منحصر به فرد برای کلید است، آنگاه رابطه محدود است. یک رابطه می تواند محدود شود یا به این دلیل که موتور نمی تواند منحصر به فرد بودن محدودیت را تضمین کند، به دلایل فنی که بعداً بیان می کنیم، یا به این دلیل که توسعه دهنده آن را به این صورت تعریف کرده است.
یک رابطه محدود به عنوان بخشی از گسترش جدول استفاده نمی شود. Power BI از سال 2018 به مدل های کامپوزیت اجازه می دهد.
در یک مدل ترکیبی، امکان ایجاد جداول در یک مدل حاوی دادهها در هر دو حالت Import (یک کپی از دادهها از منبع داده از قبل بارگذاری شده و با استفاده از موتور VertiPaq در حافظه پنهان میشود) و در حالت DirectQuery (فقط منبع داده است) وجود دارد. در زمان پرس و جو قابل دسترسی است).
یک مدل داده واحد می تواند شامل جداول ذخیره شده در VertiPaq و جداول ذخیره شده در DirectQuery باشد. پ علاوه بر این، جداول در DirectQuery میتوانند از منابع دادههای مختلف سرچشمه گرفته و چندین جزیره داده DirectQuery را ایجاد کنند.
به منظور تمایز بین داده ها در VertiPaq و داده ها در DirectQuery، می گوییم که داده ها یا در قاره (VertiPaq) یا در جزایر (منابع داده DirectQuery) هستند.
برای مشاهده ویدیوی آموزشی Custom Tooltip in Power BI در یوتیوب لینک زیر را کلیک کنید ⇓
⇐ ⇐ Custom Tooltip in Power BI
فروشگاه VertiPaq چیزی نیست جز جزیره داده دیگری. ما آن را قاره می نامیم، زیرا پرکاربردترین جزیره داده است.
یک رابطه دو جدول را به هم پیوند می دهد. اگر هر دو جدول متعلق به یک جزیره باشند، رابطه یک رابطه درون جزیره ای است. اگر این دو جدول متعلق به جزایر مختلف باشد، پس این یک رابطه بین جزیره ای است.
روابط بین جزیره ای همیشه روابط محدودی هستند. بنابراین، گسترش جدول هرگز از جزایر عبور نمی کند. روابط دارای یک اصل است که سه نوع آن وجود دارد. تفاوت بین آنها هم فنی و هم معنایی است.
در اینجا ما استدلال پشت آن روابط را پوشش نمی دهیم زیرا شامل بسیاری از انحرافات مدل سازی داده می شود که خارج از محدوده این مقاله هستند. در عوض، ما باید جزئیات فنی روابط فیزیکی و تاثیری که بر روی کد DAX دارند را پوشش دهیم.
سه نوع اصلی رابطه :
- روابط یک به چند(One-to-many relationships): این رایجترین نوع رابطه میانی است. در یک طرف رابطه، ستون باید دارای مقادیر منحصر به فرد باشد.
در چند طرف، مقدار می تواند (و معمولاً) حاوی موارد تکراری باشد. برخی از ابزارهای مشتری بین روابط یک به چند و روابط چند به یک تفاوت قائل می شوند.
با این حال، آنها همان نوع رابطه هستند. همه چیز به ترتیب جداول بستگی دارد: رابطه یک به چند بین محصول و فروش مانند رابطه چند به یک بین فروش و محصول است.
- روابط یک به یک(One-to-one relationships): این یک نوع نسبتاً غیر معمول از کاردینالیته رابطه است. در هر دو طرف رابطه، ستون ها باید مقادیر منحصر به فردی داشته باشند. نام دقیقتر رابطه «صفر یا یک» به «صفر یا یک» است زیرا وجود یک ردیف در یک جدول به معنای وجود سطر مربوطه در جدول دیگر نیست.
- روابط چند به چند(Many-to-many relationships): در هر دو طرف رابطه، ستون ها می توانند تکراری باشند. این ویژگی در سال 2018 معرفی شد و متاسفانه نام آن تا حدودی گیج کننده است.
در واقع، در زبان مدلسازی دادههای رایج، «چند به چند» به نوع متفاوتی از پیادهسازی اشاره دارد که با استفاده از جفتهای یک به چند و چند به یک ایجاد میشود.
درک این نکته مهم است که در این سناریو خیلی به چند به رابطه خیلی به چند اشاره نمی کند، بلکه به اصل بودن رابطه خیلی به چند اشاره دارد.
دوره آموزشی هوش تجاری با Power BI »کلیک کنید« یک برنامه جامع است که بر توسعه مهارت در تجزیه و تحلیل دادهها، تجسم و گزارش سازی و گزارش دهی و دشبوردسازی با استفاده از ابزار Power BI تمرکز دارد.
سپاسگذاریم از وقتی که برای خواندن این مقاله گذاشتید
.
برای خرید لایسنس پاور بی ای Power BI کلیک کنید
.
برای مشاهده ویدیوهای آموزشی داده کاوی و هوش تجاری ما را در شبکه های اجتماعی دنبال کنید
Youtube Chanel :VISTA Data Mining
Aparat Chanel: VISTA Data Mining
Instagram Chanel: VISTA Data Mining
Telegram Chanel: VISTA Data Mining
Linkedin Chanel: VISTA Company