تابعنا

شاهد شروحات ودروس في الاكسل Excel Powerquery

الجمعة، 11 يوليو 2025

كل الرموز الغريبة في Power Query (M Language)

 

كل الرموز في Power Query (M Language)






1️⃣ ?nullable type


دي معناها إن النوع ممكن يقبل قيمة فارغة (null).

m
x as nullable text // نفس كتابة: x as ?text

✅ مثال:

m
x as ?number // يعني المتغير x ممكن يكون رقم أو null

2️⃣ @recursive function reference

بتستخدم جوه دالة بتنده على نفسها (recursion). عشان تشير لنفس الدالة.

m
let fact = (n) => if n = 0 then 1 else n * @fact(n - 1) in fact(5) // ⟶ 120

بدون الـ @، الكود هيموت في سطر نفسه 😵


3️⃣ #literal keywords / escaped names

بتستخدم لما تكون بتكتب:

  • اسم جدول أو قيمة فيها مسافات أو رموز

  • أو اسم نوع بيانات

✅ أمثلة:

m
#"Changed Type" // اسم خطوة فيها مسافة #date(2024, 7, 1) // تاريخ حرفي #duration(1, 2, 0, 0) // مدة حرفية #table(...) // تعريف جدول يدوي

4️⃣ eachanonymous function

دي بتعمل دالة بدون ما تسميها، وغالبًا تستخدم جوه List.Transform, Table.AddColumn, إلخ.

m
List.Transform({1,2,3}, each _ + 1) // ⟶ {2,3,4}

each معناها: "لكل عنصر في القائمة، اعمل كذا"


5️⃣ _the current item / parameter

ده اختصار لـ "العنصر الحالي" جوا each.

m
each _ + 1 // العنصر الحالي + 1

أحيانًا تقدر تستبدله بـ اسم متغير لو عايز توضيح أكتر، بس _ هو الأشهر.


6️⃣ =>تعريف دالة

سهم بيعرف دالة:

m
(x) => x + 1 // دالة ترجع x+1

7️⃣ ..range operator

يولد قائمة من رقم إلى رقم.

m
{1..5} // ⟶ {1,2,3,4,5}

8️⃣ inتحديد النتيجة النهائية في let

بعد ما تكتب كل خطواتك بـ let, بتقول في الآخر إيه اللي يرجع.

m
let a = 5, b = a + 1 in b // ⟶ 6

9️⃣ letتحديد خطوات/قيم مساعدة

زي ما شفت فوق، بتستخدم let لتعريف أكثر من خطوة أو متغير.


🔟 asتحديد نوع البيانات

بتقول للمتغير نوعه إيه.

m
(x as number) => x + 1

1️⃣1️⃣ and, or, notعمليات منطقية

نفس اللي في أي لغة تانية:

m
if a > 1 and a < 10 then ...

1️⃣2️⃣ <>لا يساوي (not equal)

زي != في لغات تانية.

m
if x <> 5 then ...

1️⃣3️⃣ null, true, falseقيم منطقية/خاصة

  • null: لا قيمة

  • true / false: منطقية


1️⃣4️⃣ errorتعريف خطأ مخصص

m
error "دي مشكلة!" // هيوقف التنفيذ برسالة

1️⃣5️⃣ try ... otherwiseالتعامل مع الأخطاء

m
try 1/0 otherwise "خطأ"

1️⃣6️⃣ typeتعريف أو مقارنة نوع

m
Value.Type("hello") // ⟶ type text

✅ جدول تلخيصي سريع:

الرمزمعناه
?نوع يقبل null
@استدعاء دالة نفسها (recursion)
#قيم حرفية/أسماء فيها رموز
eachدالة مجهولة / لكل عنصر
_العنصر الحالي
=>تعريف دالة
..توليد قائمة من رقم إلى رقم
inيحدد النتيجة الأخيرة في let
asتحديد نوع البيانات
<>لا يساوي
tryمحاولة تنفيذ
errorتوليد خطأ




. ? (علامة الاستفهام)

Null-safe access → لما القيمة تكون null، بيرجع null بدل ما يعمل Error.

مثال:

powerquery
Record.FieldOrDefault(Custom1, "hi", null) ⇔ Custom1[hi]?

2. [] (براكتس مربعة)

للوصول إلى الأعمدة (في جداول) أو الحقول (في Records).

مثال:

powerquery
MyRecord[Name] // حقل MyTable[Column1] // عمود

3. {} (براكتس معقوفة)

للوصول إلى صف معين (Row) في Table أو عنصر في List.

مثال:

powerquery
MyTable{0} // أول صف MyList{2} // العنصر التالت

4. => (السهم القاتل)

لتعريف دالة (Function) — زي Lambda Function.

مثال:

powerquery
(x) => x * 2 // دالة تضرب X في 2

5. .. (نقطتين)

لإنشاء Range من الأرقام.

مثال:

powerquery
{1..5} // {1,2,3,4,5}

6. @ (علامة الآت)

عشان تطلع القيمة من الـ context row داخل خطوة مخصصة في Add Column.

مثال:

powerquery
each [Amount] + @TaxRate

نادرًا ما تستخدم، وممكن تسبب Errors لو مش فاهم السياق.


7. ~ (تيلدا)

مش مستخدمة رسميًا في M، بس ساعات تظهر في أسماء الأعمدة أو في ملفات CSV كـ escape character.


8. # (هاش)

تستخدم لتعريف أشياء خاصة زي:

  • النصوص اللي فيها مسافات

  • أسماء الخطوات

  • الكلمات المفتاحية

مثال:

powerquery
#"Changed Type" #"Column Name With Spaces"

9. let ... in

بداية ونهاية أي سكريبت M — زي تعريف المتغيرات وتشغيلهم.

مثال:

powerquery
let x = 5, y = x + 3 in y

10. as (تحديد النوع)

بيحدد نوع القيمة المرجعة.

مثال:

powerquery
(x as number) => x + 1

11. is و as (منطق النوع):

زي instanceof و casting.

مثال:

powerquery
x is number // بيرجع true لو x رقم x as number // بيحوّل x إلى رقم

12. ?? (مش موجود في Power Query)

مش زي C# أو JS — لكن ممكن نعمل بديل بـ:

powerquery
if x = null then y else x

✨ بونص: أدوات متقدمة

الرمزالمعنى
metaلإضافة metadata للعمود أو القيمة
inنهاية الـ let block
eachعامل اختصار لكتابة دوال سريعة
otherwiseالبديل في if statement

ليست هناك تعليقات:

إرسال تعليق