بررسی خطاهای رایج در زبان DAX
هنگام کار کردن با زبان DAX، مانند هر زبان دیگری با Error های مختلفی روبرو خواهیم شد که اجرای محاسبات را متوقف می کنند. در این مطلب قصد داریم به بررسی خطاهای رایج در زبان DAX بپردازیم.
مورد اول: اشتباه در تایپ نام ستون
برای بررسی خطاهای رایج در زبان DAX از پایگاه داده AdventureWorksDW بهره گرفته ایم. از این پایگاه داده 2 جدول کالا و فروش را در مدل بارگذاری نمودیم. تصویر مدل را مشاهده می کنید.
اولین مورد زمانی به وجود می آید که در کد خود به ستونی اشاره کرده ایم که وجود ندارد. همان طور که در تصویر مشاهده می کنید قصد داریم میزان فروش را محاسبه کنیم.
حال طبق تصویر زیر یک مژر جدید ایجاد می کنیم. با انتخاب New Measure از تب Home یک مژر جدید ایجاد می کنیم.
حال می توانید نام مژر را تایپ نموده و بعد از آن فرمول خود را بنویسید.
برای این منظور باید ستون تعداد (OrderQuantity) را در ستون قیمت (UnitPrice) ضرب کنیم. این عمل را انجام دادیم اما با خطای زیر مواجه شدیم.
چرا که ستون Quantity در جدول Sales وجود ندارد. در واقع ستون مد نظر ما OrderQuantity بوده است که به اشتباه نوشته شده است. در تصویر زیر کد نوشته شده و خطای ایجاد شده را مشاهده می نمایید.
با تصحیح نام ستون خطا برطرف خواهد شد.
مورد دوم: عدم تجمیع
در ادامه بررسی خطاهای رایج در زبان DAX به مورد دوم می رسیم. قصد داریم یک Measure ایجاد کنیم و میزان فروش را محاسبه نماییم. برای این منظور باید در جدول فروش (Sales)، تعداد فروش هر کالا (OrderQuantity) را در قیمت آن کالا (UnitPrice) ضرب نماییم. در تصویر زیر دو ستون تعداد و قیمت را که هر دو در جدول فروش ذخیره شده اند را مشاهده می نمایید.
همان طور که مشاهده می کنید تعداد در قیمت ضرب شده است. اما با خطای زیر مواجه می شویم.
در تصویر زیر کد نوشته شده و خطای ایجاد شده را مشاهده می نمایید.
دلیل این خطا چیست؟ ما در جدول فروش 60000 ردیف داریم. برای هر ردیف تعداد و قیمت ثبت شده است. منظور ما کدام ردیف است؟ این خطا به ما می گوید که نمی تواند تشخیص دهد کدام ردیف مد نظر شماست؟! اما به شما یک پیشنهاد می دهد. تجمیع کن تا خطا برطرف شود. در واقع در نوشتن مژر بدون استفاده از تابع تجمیعی به جواب مورد نظر نمی رسیم. کافی است این فرمول را در یک تابع تجمیعی مثل SUMX یا هر تابع تجمیعی دیگری قرار دهیم تا خطا برطرف شود.
همان طور که مشاهده می کنید با انجام این عمل خطا برطرف شده و نتیجه آن را در قالب یک Card مشاهده می نمایید.
مورد سوم: استفاده از ستون جدول دیگر
این بار می خواهیم میزان فروش را در صورتی که کالا را با قیمت اصلی کالا می فروختیم محاسبه کنیم. در مورد قبل ما تعداد و قیمت را از جدول فروش در هم ضرب نمودیم. در واقع تعداد را در قیمتی که برای خریدار در نظر گرفتیم ضرب کردیم. اما این بار می خواهیم قیمت واقعی کالا (ListPrice) را در نظر بگیریم. این قیمت در جدول کالا درج شده است. همان طور که در تصویر مشاهده می کنید تعداد در جدول فروش و قیمت واقعی در جدول کالا ذخیره شده است.
حال یک مژر جدید ایجاد می نماییم و مطابق آنچه که در مورد اول آموختیم تعداد کالای فروش رفته را در قیمت ضرب می نماییم. با خطای زیر روبرو می شویم.
این خطا می گوید که ستونی با نام ListPrice را نمی شناسد. طبیعی است ما به تابع SUMX جدول فروش را معرفی کردیم (تابع SUMX جدولی به عنوان آرگومان اول از ما طلب می کند). طبیعیست که وقتی تابع در حال بررسی جدول فروش است، دسترسی به ستون های جدول کالا ندارد. در تصویر زیر کد مورد نظر و خطای ایجاد شده را مشاهده می نمایید.
در واقع خطای ایجاد شده به ما می گوید که ستونی با نام ListPrice نمی شناسد. راه حل چیست؟!! آفرین! استفاده از تابع RELATED. وقتی در جداول سمت چند هستید با استفاده از تابع RELATED می توانید به ستون های جدول سمت یک دسترسی پیدا کنید.کافیست ستون جدول کالا را RELATED احاطه کنیم. خطا رفع می شود و نتیجه مطابق زیر در یک Card قابل مشاهده خواهد بود. نتیجه با محاسبه قبل یکی است چرا که کالا ها با قیمت اصلی خود به فروش رفته اند. در جدول زیر کد صحیح و نتیجه آن را مشاهده می نمایید.
مورد چهارم: اشتباه در تایپ نام Measure
این خطا زمانی ایجاد می شود که نام یک Measure را اشتباه بنویسیم. فرض کنید 2 مژر ایجاد کردیم یکی برای محاسبه فروش و یکی برای محاسبه هزینه.
حال می خواهیم این دو مژر را از هم کم کنیم و سود را محاسبه نماییم. ما به اشتباه مژر محاسبه فروش را TosalSales تایپ نمودیم که با خطا مواجه می شویم.
در تصویر زیر کد ناصحیح و خطای ایجاد شده را مشاهده می نمایید.
با تصحیح نام مژر خطا رفع می شود و نتیجه به صورت زیر قابل رویت است.
در این مطلب به بررسی خطاهای رایج در زبان DAX هنگام کار با Power BI پرداختیم. مطلب را مطالعه نمایید و با نظرات خود ما را در ادامه مسیر همراهی نمایید.
مورد پنجم: استفاده از توابعی مانند SUM و AVERAGE بر روی ستون های رشته ای
توابع SUM و AVERAGE، تنها بر روی ستون های عددی عمل می کنند. در صورتی که بخواهید از این توابع بر روی ستون های رشته ای استفاده کنید با خطا مواجه خواهید شد. به طور مثال سعی می کنیم عمل میانگین را بر روی ستون نام مشتریان پیاده سازی کنیم.
درباره حسین وثوقی
دانش آموخته مهندسی صنایع و مدیریت فناوری اطلاعات دانشگاه تهران، علاقه مند به تحلیل و ارائه راه حل برای مسائل و بهینه سازی راه حل ها هستم ...
نوشته های بیشتر از حسین وثوقی