در Power BI بهینه سازی Data Model یکی از کارهای اساسی است که باید حتما مد نظر قرار داده شود زیرا تمامی Data Model در RAM دستگاه به صورت فشردهای و توسط موتوری به نام xVelocity (که قبلا vertipaq نامیده میشد) انجام میشود.
موتور xVelocity الگوریتم مختلفی برای شناسایی نحوه فشردهسازی دادهها دارد و این کار بر اساس نوع دادههای ما (Data Type) انجام میشود و هرچقدر که تنوع دادههای ما کمتر باشد (یا با اصطلاح فنی تر Cardinality کمتری داشته باشیم) و به عبارت دیگر مقادیر یکتای ما یعنی Distinct Valueهای ما کمتر باشند، این فشرده سازی بهینه تر خواهد شد و در نتیجه RAM دستگاه کمتر اشغال میشود و شانس بیشتری برای کار با Data Modelهای بزرگتر با سرعت بیشتر خواهیم داشت.
یکی از نکاتی که به نظرم رسیده است تا بر آن تاکید کنم آن است که نیازی نیست همیشه برای اعداد اعشاری از Decimal Number استفاده کرد و در خیلی از موارد کافی است که از Fixed Decimal Number استفاده کرد.

در Fixed Decimal Number در Power BI که معادل Decimal (19,4) در SQL Server است و با نام Currency هم شناخته میشود ، میتوانیم تا ۴ رقم اعشار و ۱۵ رقم صحیح را میتوانیم داشته باشیم و بزرگترین (و با علامت منفی، کوچکترین) عددی که ذخیره میشود برابر است با:
922,337,203,685,477.5807
توجه داشته باشید که همین Data Type هم در Power Query قابل اعمال است:

استفاده از Fixed Decimal در Power BI دو مزیت دارد:
الف) طبق کنفرانس Marco Russo در یوتیوب، این دقت (با محدودیت در اعشار) باعث بیشتر شدن مقادیر distinct و در نتیجه فشرده شدن Data Model خواهد شد.
ب) خطای ناشی از گرد کردن در محاسبات را نخواهیم داشت. زیرا در Decimal دقت محاسبات اعشاری کمتر خواهد شد. همچنین دقت داشته باشید که هنگامی که چند عدد Fixed Decimal را جمع و یا تفریق میکنیم، حاصل یک Fixed Decimal خواهد شد و در صورت نیاز (مثلا تقسیم)، به صورت اتوماتیک حاصل از نوع Decimal خواهد شد و همه اینها در Power BI (و یا SSAS) مدیریت میشوند. (اینجا را ببینید)
به عنوان اولین نفر، تجربه یا دیدگاه خود را بنویسید!