انجام عملیات sumproduct در power query با List.Accumulate

در این پست به این موضوع می پردازیم که چطور داده ها رو در مرحله پردازش و قبل از ورود به محیط مدلسازی در power query جمع و ضرب کنیم (البته مثال سادست ولی پروسه برای مسائل دیگه کمک کنندست). جمع کردن چند تا ستون که زیاد سخت نیست ولی اگر بخواهیم به طور مثلا دو لیست از داده رو دو به دو ضرب کنیم و نتایج رو جمع کنیم چه کنیم؟

نسخه مورد استفاده در این مثال : Power BI June 2020

اول از همه بریم سراغ تابع اصلی یعنی List.Accumulate که سینتکس آن به صورت زیر می باشد :

به طور خلاصه میشه گفت کاربردش اینه که منطق یا تابعی که بر روی لیست اعمال میشه رو به صورت خلاصه به ما بر می گردونه یعنی چی؟ مثلا کد زیر مجموع اعداد 1 تا 5 رو برمیگردونه (خروجی 15 میشه جهت اطلاع!).

در مثال بالا لیستی داریم شامل اعداد 1 تا 5 با مقدار seed برابر 0 که در واقع همان مقدار اولیه شمارنده یا به صطلاح accumulator هستش. در قسمت سوم تابع نیز در واقع تابع مورد نظر که در اینجا جمعه نوشته شده. نگاه دقیق تر به عملکرد تابع نشان می دهد که در این مثال تابع در مراحل مختلف به این صورت کار می کند (به صورت تجمعی عمل میکنه) :

کد رو به این صورت می تونید چک کنید :

حالا اگر seed رو مثلا 2 قرار بدید یعنی state اول شما 2 خواهد بود و نتیجه 17 خواهد شد.

مثال دیگر :

که به این صورت عمل میکنه. به seed هم دقت کنید.

حالا بریم سراغ مثال و بحث پست و اون هم sumproduct می باشد :

یه فرقی بوجود اومد و اون هم اینه seed به صورت رکورد وارد شده و در اینجا دو مقدار داریم مقدار اول Sum که نتیجه خروجی رو به ما میده با مقدار اولیه 0 و مقدار دوم Index به عنوان counter یا شمارنده عمل می کنه. به روند محاسبه دقت کنید :

چند نکته :

    1. مقدار Sum آخر که در [] قرار داده شده یعنی مقدار Sum رو برگردون که اگر با Index جایگزین شود مقدار آخرین شمارنده یعنی 5 را باز می گرداند.
    2. در عبارت List2{state[Index]} در واقع مقدار ایندکس لیست دوم رو بر میگردونه و جهت اطلاع ایندکس ها در اینجا از صفر شروع می شوند.
    3. همچنین مقدار state[Sum] در اصل مقدار state با نام Sum رو بر می گردونه.

 

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

نشانی ایمیل شما منتشر نخواهد شد.

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست