5/5 - (14 امتیاز)
M زبان فرمول نویسی است که در پشت صحنه پاور کوئری فعالیت میکند. هر تغییری که شما در کوئری ایجاد میکنید به زبان M نوشته میشود. بعضی از افراد زبان M را ترسناک میدانند. در این مطلب به قسمتی از مقدمات در مورد این زبان خواهیم پرداخت ولی فعلا وارد بحث انواع فرمول ها نمی شویم. در این مطلب بیشتر به ساختار زبان M میپردازیم. زمانی که شما با ساختار و ترکیب این زبان آشنا شوید، آنگاه درک دیگر قسمت ها بسیار آسان خواهد بود. بعنوان یک برنامه نویس پاور کوئری به شما پیشنهاد میکنم که روی این بحث وقت زیادی را صرف کنید زیرا عملیات بسیاری بر اساس زبان فرمول نویسی M صورت می گیرد.

در صورتی که با ابزار قدرتمند پاور کوئری در اکسل آشنا نیستید، میتوانید به صفحه زیر مراجعه کنید و به صورت مرحله به مرحله و از ابتدا تا انتها با پاور کوئری آشنا شوید:

دوره رایگان آموزش پاور کوئری در اکسل

زبان فرمول نویسی M چیست؟

M نام غیر رسمی زبان فرمول نویسی پاور کوئری است. به دلیل اینکه نام رسمی آن طولانی است کسی از آن استفاده نمی کند. بعضی از افراد اعتقاد دارند M مخفف “data mash up” است بعضی دیگر از افراد معتقدند M مخفف “data modeling” است. ولی نکته ای که اهمیت دارد این است که M یک زبان عملکردی است و ما می بایست عملکردهای آن را بدانیم. هر زبان دارای یک ساختار و ترکیب است که اولین سطح از یادگیری هر زبان را می بایست به این قسمت تخصیص داد. در این مطلب، به مرور ترکیب فرمولهای M میپردازیم. قبل از شروع به یاد داشته باشید که :

” M بسیار قدرتمندتر از رابط کاربری گرافیکی است”

رابط گرافیکی کاربر هر ماه و شاید هفته دچار تغییر میشود و خاصیت ها و عملکردهای جدید به آن اضافه میشود. ولی حقیقت این است که تمام این خواص و عملکردها سالهاست که بر اساس یک زبان نوشته شده است.

ترکیب زبان فرمول نویسی M

ترکیب این زبان بسیار ساده است. این فرمول ها همیشه دارای دو قسمت فرمول نویسی هستند. قسمت عبارت let و قسمت عبارت in . مثالی ساده از این دو قسمت، در پائین آورده شده است:

  1. let
  2. x=1
  3. in
  4. x

 

let و in کلمات از پیش تعریف شده هستند. قبل از ادامه مطلب شما می بایست در نظر داشته باشید که:

” زبان فرمول نویسی M نسبت به حروف بزرگ و کوچک حساس است و برای مثال بین X و x تفاوت وجود دارد.”

مفهوم دو قسمت فرمول های زبان M چیست؟

Let: تعریف تمام متغیرها

In: خروجی. هر چیزی که درون این قسمت قرار میدهید خروجی کوئری شما خواهد بود.

در نتیجه کوئری زیر به این معنی است که یک متغیر به نام X تعریف میشود، مقدار 1 به آن تخصیص داده میشود و نشان دادن آن به عنوان نتیجه. بنابراین کوئری مقدار 1 را بر میگرداند.

زبان فرمول نویسی M

برای اجرای این مثال، می بایست power BI را باز کنید.

به قسمت data بروید، و یک کوئری خالی جدید ایجاد کنید.

زبان فرمول نویسی M

سپس در تب view گزینه advanced editor را انتخاب کنید.

 

زبان فرمول نویسی M

حتما دقت داشته باشید که تمام کلمات تعریف شده مثل let و in را به صورت حروف کوچک بنویسید. همچنین متغیر شما نیز می بایست در هر دو قسمت فرمول از یک نوع حروف استفاده شده باشد و همانطور که مشاهده میکنید نیازی به تعریف نوع متغیرها نیست. پس از اولین تخصیص مقدار نوع متغیر به صورت اتوماتیک مشخص میشود.

اگر یک مقدار متنی تعیین کنید آنگاه نوع متغیر به صورت اتوماتیک از نوع داده های text قرار میگیرد.

نکته مهم:

اگر کاراکتر مشخص کننده آخر فرمول را قرار ندهید، خط کدهای M ادامه می یابد.

زبان فرمول نویسی Mهمانطور که در مثال بالا مشاهده می کنید، خط فرمول ادامه می یابد و X مساوی است با x=1+1 . اگر میخواهید یک خط فرمول را به پایان برسانید می بایست یک (,) در انتهای آن قرار دهید. به مثال زیر توجه کنید.

زبان فرمول نویسی Mتمام خطوط فرمول می بایست یک (,) داشته باشند تا به پایان برسند به جز آخرین خط قبل از in .

نام متغیرها

نام متغیرها میتواند به صورت یک کلمه ای باشد یا دارای فاصله جداکننده باشد. در شرایطی که دارای کاراکترهایی مثل فاصله باشید، می بایست نام متغیر را در میان (“) قرار دهید و یک علامت # در ابتدای آن قرار دهید. برای مثال:

#”نام متغیر”

 

زبان فرمول نویسی M

کاراکترهای خاص:

نام متغیرها میتواند دارای کاراکترهای خاص باشد. برای مثال در نمونه زیر مشاهده میکنید که نام متغیر دارای انواع مختلفی از کاراکترهاست و به خوبی نیز کار میکند.

 

زبان فرمول نویسی M

کاراکتر گریز

دابل کوتیشن کاراکتر گریز است. شما میتوانید از این علامت برای تعریف نام هایی استفاده کنید که درون خود دارای یک دابل کوتیشن دیگر هستند. به مثال زیر دقت کنید:

 

زبان فرمول نویسی M

اولین دابل کوتیشن(هایلایت شده) بالا می بایست قبل از دومین دابل کوتیشن(که قسمتی از نام متغیر است) قرار گیرد.

کد نویسی مرحله به مرحله

پاور کوئری یک تبدیل مرحله به مرحله است. زمانی که کدها را مینویسید، اگر به سمت راست توجه کنید، مشاهده خواهید کرد که هر متغیری یک مرحله را تشکیل می دهد.

زبان فرمول نویسی M

در تصویر بالا، میتوانیم ببینیم که هر متغیر یک مرحله را تشکیل میدهد. و اگر متغیر دارای یک فاصله در نام خود باشد، در لیست Applied steps نیز همراه با فاصله نشان داده میشود.

آخرین متغیر همیشه در قسمت in مشخص میشود.

مقادیر ثابت

دو راه برای تعریف هر مقدار ثابت در پاور کوئری وجود دارد. برای مثال، اگر میخواهید یک متغیر تاریخ مشخص کنید، می بایست به شکل زیر عمل کنید

زبان فرمول نویسی M

برای تعریف دیگر اقسام literal، به جدول زیر رجوع کنید:

زبان فرمول نویسی M

فراخوانی تابع در زبان فرمول نویسی M

زبان M بر اساس توابع است و شما برای انجام هرکاری در این زبان می بایست یک تابع را فراخوانی کنید. برای فراخوانی توابع فقط کافیست نام آنها را وارد کنید و پارامترهای ضروری آن را مشخص نمائید.

زبان فرمول نویسی M

در تصویر بالا از Date.year استفاده شده است که قسمت سال تاریخ را مشخص میکند. نام توابع همیشه با حروف بزرگ شروع می شوند.

استفاده از کامنت در زبان فرمول نویسی M

مثل دیگر زبان های فرمول نویسی در اینجا هم شما میتوانید در کدهای خود از کامنت استفاده کنید. این کامنت ها به دو شکل هستند.

کامنت نویسی یک خطی با استفاده دو خط اسلش

زبان فرمول نویسی M

کامنت های چند خطی که می بایست بین خط اسلش و ستاره قرار گیرند.

زبان فرمول نویسی M

یک مثال واقعی

حال که با مقدمات کار آشنا شدید، به بررسی یک کوئری در حالت advanced editor میپردازیم:

زبان فرمول نویسی M

در تصویر بالا میتوانید تمام مقدماتی را که تاکنون به آن اشاره شد مشاهده کنید.

  1. قسمت های let و in
  2. تعریف نام برای متغیرها
  3. نام متغیرها همراه با علامت های “#” و (“”)
  4. کارکترهای انتهای خط فرمول
  5. فراخوانی چندین تابع

هنوزه در این کوئری قسمت های زیادی وجود دارد که شما با آن آشنا نیستید. در مطالب بعد تلاش می کنیم شما را به صورت پیشرفته تر با زبان فرمول نویسی M آشنا کنیم.

[/vc_column_text][/vc_column][/vc_row]

فیلم و دوره رایگان آموزش پاور کوئری در اکسل و پاور بی آی

مشترک شدن
Notify of
guest

2 نظرات
نظردهی درون متنی
مشاهده همه نظرات
محمدرضا

سلام
کتاب به زبان فارسی برای آموزش زبان m وجود دارد؟

امیر دایی

سلام
متاسفانه اطلاعی ندارم. برای آموزش مطالب به روز و جدید بهتر هست از منابع انگلیسی استفاده کنید.