تعریف و استفاده از متغیرها در DAX
در این بخش به تعریف و استفاده از متغیرها در DAX میپردازیم؛ و تغییرات فروش را بین سالهای مختلف محاسبه میکنیم. و همچنین با بهدست آوردن مجموع فروش در هرسال، درصد تغییرات بین هرسال را مقایسه میکنیم.
دادههای ما شبیه به جدول زیر میباشند:
Year | Month | Sales |
2013 | 1 | 20 |
2013 | 2 | 25 |
2014 | 1 | 22 |
2014 | 2 | 23 |
2015 | 1 | 21 |
2015 | 2 | 31 |
با استفاده از متغیرها میتوان برخی مدلسازی دادهای خارقالعاده را برای دریافت نتایج موردنظر اعمال کرد. در شکل زیر ما نتایج measure ها را در نمودارها میبینیم:
حال بیایید شروع کنیم:
Power BI را بازکنید و در نوار Home، بر روی Get data کلیک کرده و Blank Query را انتخاب کنید. Connect را بزنید تا پنجره Query Editor باز شود. در نوار View، بر روی دکمه Advanced Editor کلیک کرده و کد زیر را در پنجره ویرایشگر پیست کنید؛ و سپس با فشردن Done فرآیند بارگذاری داده را کامل کنید.
Let
Source = Excel.Workbook(Web.Contents(“https://powerbi.tips/wp-
content/uploads/2017/05/Clothing-Sales.xlsx”), null, true),
ClothingSales_Table = Source{[Item=”ClothingSales”,Kind=”Table”]}[Data],
#”Changed Type” = Table.TransformColumnTypes(ClothingSales_Table,{{“Date”, type
date}, {“Category”, type text}, {“Sales”, Int64.Type}}), #”Inserted Year” = Table.AddColumn(#”Changed Type”, “Year”, each
Date.Year([Date]), type number)
in
#”Inserted Year”
دادههای بارگذاری شده شما باید به شکل زیر باشد:
نام کوئری را به ClothingSales تغییر دهید و سپس Close&Apply را بزنید تا داده درون data model بارگذاری شود. حال ابتدا بر روی ستون Date موجود در قاب Fields و سپس بر روی Modeling کلیک کنید. در بخش Formatting فرمت آن را به Date Time تغییر دهید و فرمت M/d/yyyy را انتخاب کنید. مراحل بالا را برای ستونهای زیر نیز انجام دهید.
برای فرمت ستون Sales، ابتدا Currency و سپس گزینه (English (United States$ را بزنید.
برای فرمت year نیز Whole number را انتخاب کنید.
بعد از تغییر فرمت دادههای مذکور حال شرایط فراهم است تا یک نمودار میلهای ساده بسازیم. تصویر زیر مربوط به تنظیمات نمودار میلهای میباشد.
برای شروع ما میخواهیم به محاسبه مجموع فروشها بپردازیم. در تب Home بر روی New measure کلیک کنید و کد زیر را در آن بنویسید.
Total Selected Sales = SUM(ClothingSales[Sales])
از قسمت visualization یک Card را انتخاب کنید و سپس measure را در قسمت Fields قرار دهید.
روی Card کلیک کنید و سپس وارد قسمت Paint Roller شوید و تنظیمات Display unite را در Data label از حالت Auto به None تبدیل کنید تا مانند تصویر زیر عدد بهصورت کامل نمایش داده شود.
حال میخواهیم باکمی تغییر در Card فرمت دلار را نیز نشان دهیم.
بر روی نوار Modeling کلیک کنید و فرمت آن را به Currency تغییر دهید سپس (English (United States$ را انتخاب کنید. فرمت نهایی Card باید بهصورت تصویر زیر باشد.
حال ما میخواهیم گامهای قبلی را برای measure های جدیدمان تکرار کنیم.
1-measure را بسازید.
2-فرمت Card را تغییر دهید.
3-فرمت measure را تغییر دهید.
Measure بعدی مجموع کل فروش سال گذشته را محاسبه میکند.
Prior Year Sales =
VAR
selectedYear = if( HASONEVALUE(ClothingSales[Year]),
FIRSTNONBLANK(ClothingSales[Year],ClothingSales[Year]),
BLANK() )-1
Return
CALCULATE(
SUM(ClothingSales[Sales]),
ALL(ClothingSales),
ClothingSales[Year] = selectedYear)
حال توضیح خواهیم داد که در این measure چه اتفاقی میافتد.
اول، ما با استفاده از VAR یک متغیر میسازیم و نام آن را SelectedYear میگذاریم که اگر چند سال باهم انتخاب شوند، این متغیر مقدار خالی را برمیگرداند که این شرط با استفاده از عبارت if و فرمول ()HASONEVALUE انجام میشود.
و Return این اجازه را به ما میدهد تا مقداری را بتوانیم بهعنوان خروجی داشته باشیم. در این مثال ما از ()CALCULATE برای محاسبه مجموع فروشها استفاده میکنیم و در این فرمول از 2 فیلتر استفاده میکنیم.
اولین فیلتر تمام جدول را با استفاده از ()All انتخاب میکند و سپس فیلتر را از متغیر پیشنهادی قبلی با نام SelectedYear اعمال میکنیم.
همان مراحل قالببندی 2و 3 را که قبلاً ذکر شد اعمال کنید. اکنون ما میتوانیم یکی از سالها را در نمودار میلهای انتخاب کنیم. انجام این کار باعث میشود تا دو measure ایجاد شود که یکی برای فروش کل سال انتخابشده و دیگری برای سال قبل از فروش هست.
ما سال 2014 را انتخاب کردیم که فروش آن 11000 دلار است. ماوس را بر روی بخشی از نمودار که مربوط به سال 2013 است قرار دهید همانطور که میبینید نوک ابزار بهطورکلی فروش 10000 دلار را نشان میدهد.
حال ما میخواهیم درصد تغییرات را محاسبه کنیم، برای این کار مانند زیر عمل کرده و یک measure میسازیم:
Percent Change = DIVIDE([Total Selected Sales],[Prior Year Sales],1)-1
روی نوار Modeling کلیک کنید و فرمت measure را به درصد تغییر دهید. حال یک measure نهایی مانند آنچه در زیر میبینید برای نشان دادن میزان تغییرات تعریف میکنیم:
Prior Year Delta = [Total Selected Sales] – if( [Prior Year Sales] = BLANK(),
[Total Selected Sales],[Prior Year Sales])
این measure، تغییرات کل را در میان دو سال انتخابشده محاسبه میکند. دستور if در انتهای معادله، حالتی را بررسی میکند که اگر شما سال خاصی را انتخاب نکرده باشید سال پیشین را بطور پیشفرض صفر درنظر بگیرد.
درباره مبینا چزانی
دانش آموخته دانشگاه تهران، علاقهمند به کار در حوزه BI و شیفته یادگیری مطالب جدید هستم. و معتقدم هیچ گاه برای آموختن دیر نیست.
نوشته های بیشتر از مبینا چزانی