چرا یک کوئری ممکن است چندین بار اجرا شود
وقتی در پاور کوئری رفرش میکنید، کارهای زیادی در پشت صحنه انجام میشود تا یک تجربه کاربری روان به شما ارائه شود و کوئریهای شما به طور کارآمد و ایمن اجرا شوند. با این حال، در برخی موارد ممکن است متوجه شوید که هنگام رفرش دادهها، پاور کوئری چندین درخواست منبع داده ایجاد میکند. گاهی اوقات این درخواستها طبیعی هستند، اما در مواقع دیگر میتوان از آنها جلوگیری کرد.
هنگامی که چندین درخواست رخ میدهد
بخشهای زیر چند نمونه را شرح میدهند که پاور کوئری میتواند چندین درخواست را به یک منبع داده ارسال کند.
طراحی رابط
رابطها میتوانند به دلایل مختلف، از جمله فراداده، ذخیره نتایج، صفحهبندی و غیره، چندین فراخوانی به یک منبع داده انجام دهند. این رفتار طبیعی است و برای این کار طراحی شده است.
چندین پرسوجو که به یک منبع داده واحد ارجاع میدهند
اگر چندین پرسوجو از آن منبع داده دریافت شوند، چندین درخواست به یک منبع داده میتواند رخ دهد. این درخواستها حتی در مواردی که فقط یک پرسوجو به منبع داده ارجاع میدهد، میتوانند رخ دهند. اگر یک یا چند پرسوجوی دیگر به آن پرسوجو ارجاع دهند، هر پرسوجو – به همراه تمام پرسوجوهایی که به آنها وابسته است – به طور مستقل ارزیابی میشوند.در یک محیط دسکتاپ، یک بهروزرسانی واحد از تمام جداول در مدل داده با استفاده از یک حافظه پنهان مشترک اجرا میشود. ذخیرهسازی میتواند احتمال درخواستهای چندگانه به یک منبع داده را کاهش دهد، زیرا یک پرسوجو میتواند از همان درخواستی که قبلاً برای یک پرسوجوی متفاوت اجرا و ذخیرهسازی شده است، بهرهمند شود. با این حال، حتی در اینجا نیز میتوانید چندین درخواست دریافت کنید زیرا:
- منبع داده ذخیره نشده است (برای مثال، فایلهای CSV محلی).
- درخواست به منبع داده با درخواستی که قبلاً به دلیل عملیات پاییندستی ذخیره شده است (که میتواند folding را تغییر دهد) متفاوت است.
- حافظه پنهان خیلی کوچک است (که نسبتاً بعید است).
- پرسوجوها تقریباً همزمان اجرا میشوند.
در یک محیط ابری، هر پرسوجو با استفاده از حافظه پنهان جداگانه خود بهروزرسانی میشود. بنابراین یک پرسوجو نمیتواند از همان درخواستی که قبلاً برای یک پرسوجوی متفاوت ذخیرهسازی شده است، بهرهمند شود.
Folding
گاهی اوقات لایه folding پاور کوئری میتواند بر اساس عملیاتی که در پاییندست انجام میشود، چندین درخواست به یک منبع داده ایجاد کند. در چنین مواردی، میتوانید با استفاده از Table.Buffer از درخواستهای متعدد جلوگیری کنید.
بارگذاری در مدل Power BI Desktop
در پاور BI Desktop، سرویسهای تجزیه و تحلیل (AS) با استفاده از دو ارزیابی، دادهها را بهروزرسانی میکنند: یکی برای واکشی schema – که AS با درخواست ردیفهای صفر انجام میدهد – و دیگری برای واکشی دادهها. اگر محاسبه schema ردیف صفر نیاز به واکشی دادهها داشته باشد، ممکن است درخواستهای منبع داده تکراری رخ دهد.
تجزیه و تحلیل حریم خصوصی دادهها
حریم خصوصی دادهها ارزیابیهای خود را از هر پرسوجو انجام میدهد تا مشخص کند که آیا اجرای پرسوجوها با هم ایمن است یا خیر. این ارزیابی گاهی اوقات میتواند باعث درخواستهای متعدد به یک منبع داده شود. یک نشانهی آشکار مبنی بر اینکه یک درخواست مشخص از تحلیل حریم خصوصی دادهها میآید، این است که دارای شرط “TOP 1000” باشد (اگرچه همه منابع داده از چنین شرطی پشتیبانی نمیکنند). به طور کلی، غیرفعال کردن حریم خصوصی دادهها – با فرض اینکه قابل قبول باشد – درخواستهای “TOP 1000” یا سایر درخواستهای مرتبط با حریم خصوصی دادهها را در حین بهروزرسانی حذف میکند.
دانلودهای دادههای پسزمینه (همچنین به عنوان “تحلیل پسزمینه” شناخته میشود)
مشابه ارزیابیهای انجام شده برای حریم خصوصی دادهها، ویرایشگر Power Query به طور پیشفرض پیشنمایشی از ۱۰۰۰ ردیف اول هر مرحله از پرس و جو را دانلود میکند. دانلود این ردیفها به اطمینان از آماده بودن پیشنمایش دادهها برای نمایش به محض انتخاب یک مرحله کمک میکند، اما همچنین میتواند باعث درخواستهای تکراری از منبع داده شود.
وظایف متفرقه پسزمینه ویرایشگر پاور کوئری
وظایف مختلف پسزمینه ویرایشگر پاور کوئری همچنین میتوانند درخواستهای منبع داده اضافی را ایجاد کنند (برای مثال، تحلیل تاخوردگی کوئری، پروفایل ستون، بهروزرسانی خودکار پیشنمایش ۱۰۰۰ سطری که پاور کوئری پس از بارگذاری نتایج در اکسل ایجاد میکند و غیره).
جداسازی چندین پرسوجو
شما میتوانید نمونههایی از چندین پرسوجو را با غیرفعال کردن بخشهای خاصی از فرآیند پرسوجو، جداسازی کنید تا مشخص شود درخواستهای تکراری از کجا میآیند. برای مثال، اگر شروع کنید:
- در ویرایشگر پاور کوئری
- با غیرفعال بودن فایروال
- با غیرفعال بودن تحلیل پسزمینه
- با غیرفعال بودن پروفایل ستون و سایر وظایف پسزمینه
- [اختیاری] انجام Table.Buffer
در این مثال، شما فقط یک ارزیابی M دارید که هنگام بهروزرسانی پیشنمایش ویرایشگر Power Query اتفاق میافتد. اگر درخواستهای تکراری در این مرحله رخ دهند، به نوعی در نحوهی نگارش پرسوجو ذاتی هستند. در غیر این صورت، و اگر تنظیمات قبلاً شرح داده شده را یکی یکی فعال کنید، میتوانید مشاهده کنید که درخواستهای تکراری از چه نقطهای شروع به رخ دادن میکنند.
بخشهای بعدی این مراحل را با جزئیات بیشتری شرح میدهند.
تنظیم ویرایشگر Power Query
نیازی به اتصال مجدد یا ایجاد مجدد پرسوجوی خود ندارید، فقط پرسوجویی را که میخواهید آزمایش کنید در ویرایشگر Power Query باز کنید. اگر نمیخواهید با پرسوجوی موجود تداخل داشته باشید، میتوانید پرسوجو را در ویرایشگر کپی کنید.
غیرفعال کردن فایروال حریم خصوصی دادهها
مرحله بعدی غیرفعال کردن فایروال حریم خصوصی دادهها است. این مرحله فرض میکند که شما نگران نشت دادهها بین منابع نیستید، بنابراین غیرفعال کردن فایروال حریم خصوصی دادهها را میتوان با استفاده از تنظیمات Always ignore Privacy Level که در گزینه Set Fast Combine در اکسل توضیح داده شده است یا با استفاده از تنظیمات Ignore the Privacy levels and potential improve performance که در Power BI Desktop privacy levels توضیح داده شده است در Power BI Desktop انجام داد.
قبل از از سرگیری آزمایش عادی، حتماً این مرحله را لغو کنید.
غیرفعال کردن تحلیل پسزمینه
مرحله بعدی غیرفعال کردن تحلیل پسزمینه است. تحلیل پسزمینه توسط گزینه «اجازه دانلود پیشنمایش دادهها» در تنظیمات پسزمینه که در بخش «غیرفعال کردن بهروزرسانی پسزمینه Power Query برای Power BI» توضیح داده شده است، کنترل میشود. همچنین میتوانید این گزینه را در اکسل غیرفعال کنید.
جدول خود را بافر (Buffer) کنید
به صورت اختیاری، میتوانید از Table.Buffer برای خواندن اجباری تمام دادهها نیز استفاده کنید، که این کار اتفاقاتی را که در طول بارگذاری رخ میدهد، شبیهسازی میکند. برای استفاده از Table.Buffer در ویرایشگر Power Query:
- در نوار فرمول ویرایشگر Power Query، دکمه fx را برای اضافه کردن یک مرحله جدید انتخاب کنید.
- در نوار فرمول، نام مرحله قبل را با Table.Buffer(<previous step name is here>) احاطه کنید. برای مثال، اگر مرحله قبل Source نامگذاری شده باشد، نوار فرمول عبارت = Source را نمایش میدهد. مرحله را در نوار فرمول ویرایش کنید تا عبارت = Table.Buffer(Source) را بنویسید.
اجرای تست
برای اجرای تست، ویرایشگر Power Query را رفرش کنید.
برای خرید لایسنس نرم افزار Power BI ، میتوانید از خدمات ما استفاده نموده و درخواست خود را از طریق فرم زیر ثبت نمایید.
میتوانید پاور بی آی دسکتاپ رایگان را دانلود کنید : Power BI desktop download



