Menu
CoddyTech

مرجع Power BI السريع

آخر تحديث

تعلّم Power BI مجانًا

المقاييس والأعمدة والجداول

يُحسب المقياس لكل خلية في المرئي، أما العمود المحسوب فيُحسب مرة واحدة لكل صف ويُخزَّن.

الغرضDAX
إنشاء مقياسTotal Sales = SUM ( Sales[Amount] )
إنشاء عمود محسوب (قيمة واحدة لكل صف)Line Total = Sales[Quantity] * Sales[Unit Price]
إنشاء جدول محسوبTop Customers = TOPN ( 10, Customer, [Total Sales] )
الإشارة إلى عمود: اسم الجدول، ثم اسم العمود بين قوسين مربعينSales[Amount]
وضع اسم الجدول بين علامتي اقتباس إذا كان فيه مسافة أو كان كلمة محجوزة'Date'[Date]
الإشارة إلى مقياس: بالقوسين المربعين فقط[Total Sales]
استخدام مقياس داخل مقياس آخرAverage Price = DIVIDE ( [Total Sales], [Total Units] )

دوال التجميع

تلخّص كل دالة منها عمودًا في سياق التصفية الحالي.

الغرضDAX
جمع قيم عمودSUM ( Sales[Amount] )
متوسط عمودAVERAGE ( Sales[Amount] )
أصغر قيمةMIN ( Sales[Order Date] )
أكبر قيمةMAX ( Sales[Order Date] )
عدّ صفوف جدولCOUNTROWS ( Sales )
عدّ القيم غير الفارغة في عمودCOUNT ( Sales[Amount] )
عدّ القيم المميزةDISTINCTCOUNT ( Sales[Customer Key] )
قسمة آمنة: قيمة فارغة بدل الخطأ عندما يكون المقام 0DIVIDE ( [Total Sales], [Total Units] )
قسمة مع قيمة تظهر عندما يكون المقام 0DIVIDE ( [Profit], [Total Sales], 0 )

المكررات (دوال X)

تمرّ على الجدول صفًا صفًا، وتحسب تعبيرًا لكل صف، ثم تجمع النتائج.

الغرضDAX
الضرب في كل صف ثم الجمعSUMX ( Sales, Sales[Quantity] * Sales[Unit Price] )
متوسط نتيجة كل صفAVERAGEX ( Sales, Sales[Quantity] * Sales[Unit Price] )
أكبر نتيجة بين الصفوفMAXX ( Sales, Sales[Quantity] * Sales[Unit Price] )
متوسط مقياس لكل عميلAVERAGEX ( VALUES ( Customer[Customer Key] ), [Total Sales] )
استخدام عمود من جدول مرتبط داخل التعبيرSUMX ( Sales, Sales[Quantity] * RELATED ( Product[Unit Cost] ) )
عدّ الصفوف التي تحقق شرطًاCOUNTROWS ( FILTER ( Sales, Sales[Quantity] >= 3 ) )
ترتيب كل المنتجات حسب مقياسRANKX ( ALL ( Product[Product] ), [Total Sales] )
ترتيب بلا فجوات بعد التعادل (1، 1، 2)RANKX ( ALL ( Product[Product] ), [Total Sales], , DESC, DENSE )
ضمّ القيم في نص واحدCONCATENATEX ( VALUES ( Product[Category] ), Product[Category], ", " )

CALCULATE ودوال التصفية

تحسب CALCULATE تعبيرًا بعوامل تصفية معدّلة. عامل التصفية على العمود نفسه يحلّ محل القديم، وعوامل التصفية على أعمدة مختلفة تجتمع بـ AND.

الغرضDAX
التصفية على قيمة واحدةCALCULATE ( [Total Sales], Product[Category] = "Bikes" )
التصفية على قائمة قيمCALCULATE ( [Total Sales], Product[Color] IN { "Red", "Blue" } )
عاملا تصفية (AND)CALCULATE ( [Total Sales], Product[Color] = "Red", Store[Country] = "Spain" )
OR عبر عمودينCALCULATE ( [Total Sales], FILTER ( ALL ( Product[Color], Product[Brand] ), Product[Color] = "Red" || Product[Brand] = "Contoso" ) )
التصفية حسب مقياسCALCULATE ( [Total Sales], FILTER ( VALUES ( Customer[Customer Key] ), [Total Sales] > 1000 ) )
الإبقاء على عامل التصفية الحالي والتقاطع معهCALCULATE ( [Total Sales], KEEPFILTERS ( Product[Color] IN { "Red", "Blue" } ) )
إزالة عوامل التصفية عن عمودCALCULATE ( [Total Sales], REMOVEFILTERS ( Product[Category] ) )
إزالة كل عوامل التصفية عن جدولCALCULATE ( [Total Sales], ALL ( Product ) )
إزالة كل عوامل التصفية عن جدول ما عدا بعض الأعمدةCALCULATE ( [Total Sales], ALLEXCEPT ( Store, Store[Country] ) )
الإبقاء على اختيار مقسم طريقة العرض، وتجاهل صفوف المرئي نفسهCALCULATE ( [Total Sales], ALLSELECTED ( Product[Category] ) )
استخدام علاقة غير نشطةCALCULATE ( [Total Sales], USERELATIONSHIP ( Sales[Ship Date], 'Date'[Date] ) )
جعل التصفية تسري في الاتجاهين لمقياس واحدCALCULATE ( COUNTROWS ( Customer ), CROSSFILTER ( Sales[Customer Key], Customer[Customer Key], BOTH ) )
التصفية بجدول لا تربطه به علاقةCALCULATE ( [Total Sales], TREATAS ( VALUES ( Budget[Category] ), Product[Category] ) )

التحليل الذكي للوقت

تحتاج هذه الدوال إلى جدول تاريخ: صف واحد لكل يوم، بلا فجوات، ومعلَّم كجدول تاريخ.

الغرضDAX
منذ بداية العامTOTALYTD ( [Total Sales], 'Date'[Date] )
منذ بداية العام، لسنة مالية تنتهي في 30 يونيوTOTALYTD ( [Total Sales], 'Date'[Date], "6/30" )
منذ بداية العام داخل CALCULATECALCULATE ( [Total Sales], DATESYTD ( 'Date'[Date] ) )
منذ بداية الربعTOTALQTD ( [Total Sales], 'Date'[Date] )
منذ بداية الشهرTOTALMTD ( [Total Sales], 'Date'[Date] )
الفترة نفسها من العام الماضيCALCULATE ( [Total Sales], SAMEPERIODLASTYEAR ( 'Date'[Date] ) )
إزاحة التواريخ بفاصل زمني (هنا شهر واحد إلى الوراء)CALCULATE ( [Total Sales], DATEADD ( 'Date'[Date], -1, MONTH ) )
الشهر السابق كاملًاCALCULATE ( [Total Sales], PREVIOUSMONTH ( 'Date'[Date] ) )
الفترة كاملة قبل عامCALCULATE ( [Total Sales], PARALLELPERIOD ( 'Date'[Date], -1, YEAR ) )
آخر 12 شهرًا حتى آخر تاريخ ظاهرCALCULATE ( [Total Sales], DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -12, MONTH ) )
نطاق تواريخ ثابتCALCULATE ( [Total Sales], DATESBETWEEN ( 'Date'[Date], DATE ( 2025, 1, 1 ), DATE ( 2025, 3, 31 ) ) )

أنماط مقاييس شائعة

انسخها، ثم غيّر أسماء الجداول والأعمدة لتطابق نموذجك.

الغرضDAX
النسبة من كل الفئاتCategory % = DIVIDE ( [Total Sales], CALCULATE ( [Total Sales], REMOVEFILTERS ( Product[Category] ) ) )
النسبة مما تتركه مقسمات طرق العرضVisible % = DIVIDE ( [Total Sales], CALCULATE ( [Total Sales], ALLSELECTED ( Product[Category] ) ) )
النمو مقارنة بالعام الماضيYoY % = VAR LastYear = CALCULATE ( [Total Sales], SAMEPERIODLASTYEAR ( 'Date'[Date] ) ) RETURN DIVIDE ( [Total Sales] - LastYear, LastYear )
الإجمالي التراكمي على كل الفتراتRunning Total = CALCULATE ( [Total Sales], FILTER ( ALL ( 'Date'[Date] ), 'Date'[Date] <= MAX ( 'Date'[Date] ) ) )
متوسط متحرك لسبعة أيام (لكل يوم فيه مبيعات)Sales 7 Day Avg = AVERAGEX ( DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -7, DAY ), [Total Sales] )
إظهار القيمة لأعلى 5 فقطTop 5 Sales = IF ( RANKX ( ALLSELECTED ( Product[Product] ), [Total Sales] ) <= 5, [Total Sales] )
عدّ العملاء فوق حدّ معيّنBig Customers = COUNTROWS ( FILTER ( VALUES ( Customer[Customer Key] ), [Total Sales] > 1000 ) )
جعل الإجمالي يساوي مجموع صفوفهBonus Total = SUMX ( VALUES ( Product[Category] ), [Bonus] )
إظهار القيمة في مستوى واحد فقط من المصفوفةCategory Rank = IF ( ISINSCOPE ( Product[Category] ), RANKX ( ALL ( Product[Category] ), [Total Sales] ) )
الرصيد الختامي: آخر تاريخ فيه قيمةClosing Units = CALCULATE ( SUM ( Inventory[Units] ), LASTNONBLANK ( 'Date'[Date], CALCULATE ( SUM ( Inventory[Units] ) ) ) )

الدوال المنطقية ودوال المعلومات

للشروط، ولمعرفة ما يحتويه سياق التصفية.

الغرضDAX
شرط واحدIF ( [Total Sales] > 1000, "High", "Low" )
عدة قيم لتعبير واحدSWITCH ( Store[Country], "Spain", "ES", "Portugal", "PT", "Other" )
نطاقات تُفحص من الأعلى إلى الأسفلSWITCH ( TRUE (), [Total Sales] >= 10000, "A", [Total Sales] >= 1000, "B", "C" )
AND وORIF ( Sales[Quantity] > 2 && Sales[Amount] > 50, "Big", "Small" )
هل القيمة فارغة؟ISBLANK ( [Total Sales] )
أول قيمة غير فارغةCOALESCE ( [Total Sales], 0 )
هل يترك عامل التصفية قيمة واحدة بالضبط؟HASONEVALUE ( Product[Category] )
تلك القيمة الواحدة، أو قيمة افتراضيةSELECTEDVALUE ( Product[Category], "All categories" )
هل هذا الصف من المرئي مجمّع حسب العمود؟ISINSCOPE ( Product[Category] )
إرجاع قيمة فارغةBLANK ()

دوال النص

يضمّ العامل & النصوص، وتحوّل FORMAT رقمًا أو تاريخًا إلى نص.

الغرضDAX
ضمّ النصوصCustomer[First Name] & " " & Customer[Last Name]
تنسيق رقمFORMAT ( [Total Sales], "#,0.00" )
تنسيق تاريخFORMAT ( 'Date'[Date], "mmm yyyy" )
الأحرف الأولىLEFT ( Product[Code], 3 )
أحرف تبدأ من موضع معيّنMID ( Product[Code], 4, 2 )
الطولLEN ( Product[Name] )
تحويل إلى أحرف كبيرةUPPER ( Store[City] )
إزالة المسافات الزائدةTRIM ( Customer[Name] )
استبدال نصSUBSTITUTE ( Customer[Phone], " ", "" )
موضع نص دون مراعاة حالة الأحرف (0 إذا لم يوجد)SEARCH ( "pro", Product[Name], 1, 0 )

دوال التاريخ

التواريخ أرقام في الأساس، لذا يمكنك طرح تاريخ من آخر لتحصل على عدد الأيام.

الغرضDAX
تاريخ اليومTODAY ()
إنشاء تاريخDATE ( 2025, 12, 31 )
سنة التاريخYEAR ( 'Date'[Date] )
رقم الشهرMONTH ( 'Date'[Date] )
يوم الأسبوع، والاثنين هو 1WEEKDAY ( 'Date'[Date], 2 )
رقم الأسبوع، والأسابيع تبدأ يوم الاثنينWEEKNUM ( 'Date'[Date], 2 )
آخر يوم في الشهرEOMONTH ( 'Date'[Date], 0 )
اليوم نفسه قبل شهرEDATE ( 'Date'[Date], -1 )
عدد الأيام بين تاريخينDATEDIFF ( Sales[Order Date], Sales[Ship Date], DAY )
جدول تاريخ من تواريخ ثابتةCALENDAR ( DATE ( 2024, 1, 1 ), DATE ( 2025, 12, 31 ) )
جدول تاريخ من التواريخ الموجودة في النموذجCALENDARAUTO ()

العلاقات والبحث

تتبع RELATED العلاقة من الطرف المتعدد إلى الطرف الأحادي.

الغرضDAX
قيمة من الطرف الأحادي (في عمود على Sales)RELATED ( Product[Category] )
صفوف الطرف المتعدد المرتبطة بالصف الحالي (في عمود على Customer)COUNTROWS ( RELATEDTABLE ( Sales ) )
البحث عن قيمة دون علاقةLOOKUPVALUE ( Product[Price], Product[SKU], Sales[SKU] )
مسار الأصل والفرع (للتسلسلات الهرمية والأمان على مستوى الصف)PATH ( Employee[Employee ID], Employee[Manager ID] )
المستخدم الذي سجّل الدخول، للأمان الديناميكي على مستوى الصفUSERPRINCIPALNAME ()

دوال الجداول

تُرجع جداول: استخدمها في جدول محسوب، أو داخل CALCULATE، أو في مكرر.

الغرضDAX
القيم المميزة في عامل التصفية الحاليVALUES ( Product[Category] )
الصفوف التي تحقق شرطًاFILTER ( Product, Product[Price] > 100 )
أعلى N صفوف حسب مقياسTOPN ( 5, ALL ( Product[Product] ), [Total Sales] )
التجميع حسب أعمدة وإضافة مقاييسSUMMARIZECOLUMNS ( Product[Category], "Sales", [Total Sales] )
إضافة عمود إلى جدولADDCOLUMNS ( VALUES ( Product[Category] ), "Sales", [Total Sales] )
اختيار أعمدة وإعادة تسميتهاSELECTCOLUMNS ( Customer, "Name", Customer[Name], "City", Customer[City] )
قائمة أرقامGENERATESERIES ( 1, 10, 1 )
كل التوافيق بين جدولينCROSSJOIN ( VALUES ( 'Date'[Year] ), VALUES ( Product[Category] ) )
تكديس جدولين لهما الأعمدة نفسهاUNION ( 'Sales 2024', 'Sales 2025' )

المتغيرات

يسمّي VAR خطوة ويحسبها مرة واحدة، ويعطي RETURN النتيجة.

الغرضDAX
متغير واحدMargin % = VAR Revenue = [Total Sales] RETURN DIVIDE ( Revenue - [Total Cost], Revenue )
عدة متغيراتSales vs LY = VAR CY = [Total Sales] VAR PY = CALCULATE ( [Total Sales], SAMEPERIODLASTYEAR ( 'Date'[Date] ) ) RETURN CY - PY
جدول داخل متغيرTop 5 Total = VAR Top5 = TOPN ( 5, ALL ( Product[Product] ), [Total Sales] ) RETURN CALCULATE ( [Total Sales], Top5 )

خطوات Power Query (M)

يشكّل Power Query البيانات قبل تحميلها. هذه صيغ M التي تعمل خلف الأزرار الشائعة.

الغرضM
الإبقاء على الصفوف المطابقةTable.SelectRows(Source, each [Status] = "Paid")
إزالة أعمدةTable.RemoveColumns(Source, {"Notes", "Temp"})
تعيين أنواع الأعمدةTable.TransformColumnTypes(Source, {{"Amount", type number}, {"Date", type date}})
إعادة تسمية عمودTable.RenameColumns(Source, {{"amt", "Amount"}})
إضافة عمودTable.AddColumn(Source, "Total", each [Quantity] * [Price], type number)
دمج استعلامين (ربط)Table.NestedJoin(Sales, {"ProductID"}, Products, {"ProductID"}, "Product", JoinKind.LeftOuter)
إلحاق استعلامات (تكديس)Table.Combine({Sales2024, Sales2025})
إلغاء تمحور الأعمدة إلى صفوفTable.UnpivotOtherColumns(Source, {"Product"}, "Month", "Amount")
التجميع والتلخيصTable.Group(Source, {"Category"}, {{"Sales", each List.Sum([Amount]), type number}})
استبدال الأخطاء بقيمةTable.ReplaceErrorValues(Source, {{"Amount", 0}})

يجمع مرجع Power BI السريع هذا صيغ DAX الأكثر استخدامًا في صفحة واحدة: التجميعات، ومكررات X، وCALCULATE والدوال التي تغيّر عوامل التصفية، والتحليل الذكي للوقت، ودوال النص والتاريخ، وأنماط مقاييس يمكنك نسخها، مثل النسبة من الإجمالي والنمو مقارنة بالعام الماضي والإجمالي التراكمي.

تستخدم الأمثلة نموذج مبيعات فيه الجداول Sales وProduct وCustomer و'Date'؛ غيّر الأسماء لتطابق نموذجك. حُلّلت كل صيغ DAX هنا بالمحرك الذي تعمل به دورة Power BI في Coddy، وفيها تكتب DAX في مساحة عمل Power BI داخل متصفحك ويُتحقَّق منه.

أسئلة شائعة عن مرجع Power BI السريع

هل مرجع Power BI السريع هذا مجاني؟

نعم. اقرأه هنا أو احفظه في المفضلة، بلا تسجيل.

ما الفرق بين المقياس والعمود المحسوب؟

يُحسب العمود المحسوب مرة واحدة لكل صف عند التحديث ويُخزَّن، لذا يمكنك التقسيم حسبه. أما المقياس فيُحسب لكل خلية في المرئي، بعوامل تصفية تلك الخلية، ولا يخزّن شيئًا. الإجماليات والنسب مكانها المقاييس.

ماذا تفعل CALCULATE؟

تحسب تعبيرًا بعوامل تصفية معدّلة: تضيف عوامل تصفية أو تستبدلها أو تزيلها، ثم تحسب النتيجة. ومعظم DAX بعد الإجماليات البسيطة هو CALCULATE مع وسائط التصفية المناسبة.

لماذا أستخدم DIVIDE بدل العامل /؟
تُرجع DIVIDE قيمة فارغة (أو قيمة تختارها) عندما يكون المقام صفرًا أو فارغًا. أما العامل / فيُرجع ما لا نهاية أو قيمة خطأ، وتظهر هذه في المرئيات.
هل أحتاج إلى جدول تاريخ للتحليل الذكي للوقت؟
نعم. تحتاج دوال مثل TOTALYTD وSAMEPERIODLASTYEAR إلى جدول فيه صف لكل يوم، بلا فجوات وبسنوات كاملة، مرتبط بجداول الحقائق ومعلَّم كجدول تاريخ.
هل يعمل DAX هذا في Power Pivot في Excel وفي Analysis Services؟

لغة DAX مشتركة، لذا يعمل كله تقريبًا هناك أيضًا. بعض الدوال الأحدث تصل إلى Power BI أولًا.

أين أتدرّب على DAX؟

في دورة Power BI على Coddy: يمنحك كل درس مساحة عمل Power BI في المتصفح، ويتحقق من مقياسك على بيانات الدرس وعلى نسخ مخفية منها.

رسم توضيحي للغات البرمجة في Coddy

تعلّم Power BI مع Coddy

ابدأ الآن