> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aftersell.com/llms.txt
> Use this file to discover all available pages before exploring further.

# مرجع AftersellQL (AQL)

> مرجع لغة الاستعلام AftersellQL: المقاييس والأبعاد المتاحة، وصيغة عبارات AQL مع أمثلة، وقواعد المنطقة الزمنية في Explorer.

كل استعلام تنشئه في [Explorer](/ar/aftersell/reports_explorer) هو عبارة **AftersellQL (AQL)**. في معظم الأحيان تُنشئ الاستعلامات بصريًا ولا تكتب AQL يدويًا أبدًا؛ هذه الصفحة هي المرجع للمقاييس والأبعاد التي يمكنك اختيارها، والصيغة النصية لـ AQL، وقواعد المنطقة الزمنية.

<div id="available-metrics">
  ## المقاييس المتاحة
</div>

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

<div id="revenue-profit">
  ### الإيرادات والربح
</div>

| المقياس | الوصف |
| - | - |
| **Revenue** | إيرادات البيع الإضافي بالعملة الأصلية لمتجرك. |
| **Revenue (USD)** | إيرادات البيع الإضافي مُحوّلة إلى الدولار الأمريكي للمقارنات بين العملات. |
| **Revenue Per Visit** | إيرادات البيع الإضافي لكل جلسة ظهور. لا يمكن تفصيلها حسب المنتج أو الموضع أو المسار أو الجهاز. |
| **Avg. Conversion Value** | الإيرادات لكل عرض مقبول. ويُشار إليها أيضًا باسم متوسط قيمة البيع الإضافي. |
| **Upsell Revenue Per Order** | إيرادات البيع الإضافي (بالدولار الأمريكي) مقسومة على إجمالي الطلبات. على مستوى المتجر فقط. |
| **Product Profit** | الإيرادات مطروحًا منها تكلفة البضائع المباعة (COGS) للمنتجات المباعة كبيع إضافي. تعتمد على COGS التي يكوّنها التاجر، لذا تعامل معها كتقدير: المنتجات التي لا تُتتبَّع تكلفتها تُبلغ عن إيراداتها كربح، وتختلف تغطية التكاليف من متجر لآخر. على مستوى المنتج فقط؛ لا يمكن تفصيلها حسب المسار أو الموضع أو الجهاز. |

<div id="conversions">
  ### التحويلات
</div>

| المقياس | الوصف |
| - | - |
| **Conversions** | عدد أحداث قبول العروض. العرض المقبول الواحد يساوي تحويلًا واحدًا، لذا فإن الجلسة التي تقبل عرضين تُحتسب مرتين. |
| **Accept Rate** | قائم على الجلسات: نسبة الجلسات التي شاهدت عرضًا وقبلت عرضًا واحدًا على الأقل. يُحسب بشكل مستقل عن Conversions، من تجميع مختلف، لذا فهو ليس Conversions ÷ Impressions. |
| **Units Sold** | إجمالي الوحدات المباعة عبر عروض البيع الإضافي. |
| **Decline Rate** | نسبة عروض ما بعد الشراء التي رُفضت صراحةً. لما بعد الشراء فقط. |

<div id="engagement">
  ### التفاعل
</div>

| المقياس | الوصف |
| - | - |
| **Impressions** | الجلسات الفريدة التي شاهدت عرضًا. |
| **Show Rate** | نسبة القرارات التي أسفرت عن ظهور. |

<div id="store-performance">
  ### أداء المتجر
</div>

| المقياس | الوصف |
| - | - |
| **Total Store Revenue** | إجمالي إيرادات الطلبات المدفوعة في Shopify. على مستوى المتجر فقط؛ لا يمكن تفصيلها حسب السطح أو المسار أو الموضع أو الجهاز. |
| **Orders** | إجمالي الطلبات المدفوعة في Shopify. على مستوى المتجر فقط. |
| **Average Total Order Value** | إيرادات المتجر مقسومة على الطلبات. متوسط قيمة الطلب على مستوى المتجر. |

<div id="rokt-network">
  ### شبكة Rokt
</div>

| المقياس | الوصف |
| - | - |
| **Rokt Revenue** | إيرادات شبكة Rokt المنسوبة إلى متجرك. |
| **Rokt Transactions** | عدد معاملات شبكة Rokt لمتجرك. |
| **Rokt Revenue / Transaction** | إيرادات Rokt مقسومة على المعاملات لكل فترة زمنية. |
| **Rokt Impressions** | إجمالي مرات ظهور شبكة Rokt عبر مواضع متجرك. يختلف عن **Impressions** الخاصة بالبيع الإضافي. |
| **Rokt Referrals** | إحالات شبكة Rokt، وهي تفاعلات إيجابية أرسلت المتسوق إلى أحد شركاء Rokt. |

<div id="dimensions">
  ## الأبعاد
</div>

تفصّل الأبعاد المقياس حسب سمة معينة. ليست كل الأبعاد متوافقة مع كل مقياس؛ يمنع Explorer تلقائيًا التركيبات غير المتوافقة (على سبيل المثال، لا يمكن تفصيل **Decline rate** و**Show rate** حسب **Currency**).

<div id="available-dimensions">
  ### الأبعاد المتاحة
</div>

| البُعد | الوصف |
| - | - |
| **Date** | يجمّع النتائج حسب اليوم أو الأسبوع أو الشهر. |
| **Surface** | سطح البيع الإضافي: PPU (ما بعد الشراء) أو Checkout أو Thank You Page أو Cart. |
| **Funnel** | المسار المحدد الذي ينتمي إليه العرض. |
| **Product** | المنتج المباع كبيع إضافي. |
| **Placement** | الموضع داخل المسار. |
| **Device** | نوع الجهاز: Mobile أو Desktop أو Unknown. لا توجد قيمة منفصلة للأجهزة اللوحية. |
| **Currency** | رمز العملة وفق ISO (على سبيل المثال، USD وEUR وGBP). مفيد للمتاجر متعددة العملات. |

<div id="unavailable-dimensions">
  ### الأبعاد غير المتاحة
</div>

الأبعاد التالية قيد التطوير. تظهر في أداة الاختيار لكنها تظهر بحالة 'Not compatible' لكل مقياس إلى أن يتم تنفيذها.

| البُعد | الوصف |
| - | - |
| **Flow type** | نوع تدفق البيع الإضافي. |
| **Experiment** | اختبار A/B أو متغير التجربة. |
| **Outcome** | نتيجة القرار (على سبيل المثال، مؤهل، نفد من المخزون). |
| **Reason code** | سبب نتيجة القرار. |
| **Scope** | نطاق القرار (Flow أو Experience أو Placement أو ItemSlot). |
| **Response type** | الاستجابة للعرض (Accepted أو Declined أو Timeout). |

<div id="aql-statement-syntax">
  ## صيغة عبارات AQL
</div>

عبارة AQL هي سؤال واحد مكوّن من عبارات فرعية. فقط `SELECT` ونطاق زمني (`SINCE`) مطلوبان؛ وكل ما عدا ذلك اختياري. عند تضمين العبارات الاختيارية، يجب أن تظهر بهذا الترتيب:

```text theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
SELECT    <metrics>                    -- what to measure (required)
WHERE     <filters>                    -- narrow the data
GROUP BY  <dimensions>                 -- break the numbers down
SINCE     <time range>                 -- the period to cover (required)
GRAIN     <time grain>                 -- bucket size for time series
COMPARE   <comparison>                 -- compare against another period
CHART     <visualization>              -- how to display the result
TIMEZONE  "<timezone>"                 -- timezone for date buckets
ORDER BY  <field> <direction>          -- sort the results
LIMIT     <number>                     -- cap the number of rows
```

مثال بسيط، إيرادات البيع الإضافي ومعدل القبول اليومي لآخر 30 يومًا:

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
SELECT revenue, accept_rate
GROUP BY date
SINCE last_30d
GRAIN day
```

<Note>
  الكلمات المفتاحية غير حساسة لحالة الأحرف (`SELECT` و`select` كلاهما يعمل) ولا تنتهي العبارات بفاصلة منقوطة. تُحاط القيم النصية بعلامات اقتباس مزدوجة؛ أما الأرقام والقوائم فلا.
</Note>

<div id="select-and-group-by">
  ### SELECT وGROUP BY
</div>

* **`SELECT`** يسرد المقاييس المراد قياسها، مفصولة بفواصل، على سبيل المثال `SELECT revenue, impressions, accept_rate`.
* **`GROUP BY`** يفصّل تلك المقاييس حسب بُعد واحد أو أكثر، مثل `date` أو `device` أو `surface` أو `funnel`. بدون `GROUP BY`، تحصل على إجمالي واحد للفترة بأكملها.

<div id="filtering-with-where">
  ### التصفية باستخدام WHERE
</div>

يضيّق `WHERE` نطاق البيانات قبل قياسها. اجمع الشروط باستخدام `AND`.

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
SELECT revenue
WHERE device = "mobile"
GROUP BY date
SINCE last_month
GRAIN day
```

<Warning>
  **لا يمكن** تصفية `impressions` و`accept_rate` و`rpv` أو تجميعها حسب الجهاز أو المسار أو الموضع أو المنتج؛ إذ لا يحتوي التجميع المصدر لها على مثل هذا العمود. إضافة `WHERE device = "mobile"` إلى استعلام يختار أيًا منها تُرفض مع الرسالة `metric "impressions" cannot be filtered by "device"`.
</Warning>

المقارنات المدعومة هي `=` و`!=` و`IN` و`NOT IN` و`>` و`<` و`>=` و`<=`. استخدم قائمة مع `IN` لمطابقة عدة قيم:

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
WHERE surface IN ["PPU", "Checkout"]
```

`experiment` **ليس** حقلًا قابلًا للتصفية؛ إذ لا يوجد له مصدر تجميع، لذا يُرفض `WHERE experiment IN [...]` مع الرسالة `filters on "experiment" are not supported.`

يدعم عامل تصفية **funnel** التحديد المتعدد: **is one of** (`IN`) يتضمن المسارات المحددة فقط، و**is not one of** (`NOT IN`) يستبعدها. عند التجميع حسب **Funnel** وتطبيق عامل تصفية **is one of**، يعرض المخطط خطًا واحدًا لكل مسار محدد، دون دمج في "Other".

<div id="time-ranges-and-comparisons">
  ### النطاقات الزمنية والمقارنات
</div>

يحتاج كل استعلام إلى نطاق زمني، يُحدَّد باستخدام `SINCE`:

| الشكل | مثال | المعنى |
| - | - | - |
| إعداد مسبق | `SINCE last_30d` | نافذة متحركة تنتهي **بالأمس** (UTC). يُستبعد اليوم الحالي الجاري عمدًا، لذا فإن `last_1d` تعني الأمس فقط، و`this_month` تمتد من اليوم الأول إلى الأمس. |
| نافذة مخصصة | `SINCE 2026-07-02 UNTIL 2026-07-05` | نطاق ثابت، باستخدام تواريخ ISO (`YYYY-MM-DD`). |

الإعدادات المسبقة المتاحة: `last_1d` و`last_7d` و`last_30d` و`last_90d` و`this_month` و`last_month` و`this_year`.

* **`GRAIN`** يحدد حجم الفترة للسلاسل الزمنية: `day` أو `week` أو `month`. (يتم تحليل `hour` لكن لا يوجد تجميع يوفّر بيانات بالساعة، لذا يُرفض مثل هذا الاستعلام مع الرسالة `group_by / time_grain combination is not supported.`)
* **`COMPARE`** يضيف فترة ثانية فوق الأولى. استخدم `previous_period`، وهي النافذة المساوية في الطول التي تسبقها مباشرةً. `previous_year` مخفية من أداة اختيار Compare لأن مستودع البيانات لا يحتوي على بيانات قبل فبراير 2026؛ وتبقى قابلة للكتابة في AQL فقط حتى يستمر تحليل الاستعلامات المحفوظة سابقًا.

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
-- A four-day sale vs the four days immediately before it
SELECT revenue, impressions, accept_rate
GROUP BY date
SINCE 2026-07-02 UNTIL 2026-07-05
GRAIN day
COMPARE previous_period
```

<Note>
  تبدأ بيانات التقارير في **فبراير 2026**، لذا فإن أي نافذة أقدم من ذلك تُرجع نتائج فارغة لكلتا الفترتين.
</Note>

<div id="choosing-a-chart">
  ### اختيار المخطط
</div>

* **`CHART`** يحدد طريقة عرض النتيجة: `scorecard` أو `line_chart` أو `bar_chart` أو `area_chart` أو `funnel_chart` أو `table`.
* **`TIMEZONE`** يحدد المنطقة الزمنية المستخدمة لتجميع التواريخ، كاسم IANA بين علامتي اقتباس، على سبيل المثال `TIMEZONE "America/New_York"`. القيمة الافتراضية هي UTC (انظر [المناطق الزمنية](#timezones)).

لنوع `funnel_chart` متطلبات محددة:

* **وضع الموضع.** جمّع حسب `placement` واختر مقياسًا واحدًا. تُرتَّب المراحل وفق تسلسل المواضع القياسي (البيع الإضافي الافتراضي، ثم البيع البديل، ثم عروض البيع الإضافي الإضافية). يُرسم المقياس الأول فقط؛ ويُشار إلى المقاييس الإضافية في حاشية.
* **وضع المقاييس.** اختر مقياسين أو أكثر دون `GROUP BY`. يصبح كل مقياس مرحلة في المسار بترتيب الاستعلام (على سبيل المثال، `SELECT impressions, conversions` يعرض الانخفاض من مرات الظهور إلى التحويلات). يجب أن تشترك جميع المقاييس في الوحدة نفسها.

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
-- Placement funnel: conversion drop-off across placements
SELECT conversions
GROUP BY placement
SINCE last_30d
CHART funnel_chart
```

<Warning>
  يحتاج وضع الموضع إلى مقياس يمكن تفصيله حسب الموضع. لا يمكن ذلك مع `impressions` و`accept_rate` و`rpv`؛ إذ يعرض مخطط المسار الرسالة "These metrics can't be grouped by placement" لها.
</Warning>

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
-- Metric funnel: impressions to conversions drop-off
SELECT impressions, conversions
SINCE last_30d
CHART funnel_chart
```

<div id="sorting-and-limiting">
  ### الفرز والتقييد
</div>

* **`ORDER BY`** يفرز النتائج حسب مقياس أو بُعد، مع `ASC` أو `DESC`.
* **`LIMIT`** يحدد الحد الأقصى لعدد الصفوف المُرجعة، وهو مفيد لأسئلة "أفضل N".

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
-- Top 20 products by upsell revenue this month
SELECT revenue, conversions, avg_conversion_value
GROUP BY product
SINCE this_month
ORDER BY revenue DESC
LIMIT 20
```

<div id="more-examples">
  ### المزيد من الأمثلة
</div>

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
-- Daily performance vs the previous period
SELECT revenue, impressions, conversions, accept_rate
GROUP BY date
SINCE last_30d
GRAIN day
COMPARE previous_period
```

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
-- Mobile vs desktop revenue over the last 90 days
SELECT revenue
GROUP BY device
SINCE last_90d
ORDER BY revenue DESC
```

<Note>
  لا يمكن تفصيل `impressions` و`accept_rate` و`rpv` حسب الجهاز؛ فتجميعها هو المتجر × السطح × اليوم، دون عمود للجهاز. استخدم `revenue` (أو مقياسًا آخر مصدره التحويلات) لمقارنات الأجهزة.
</Note>

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
-- Which surface is driving the most revenue?
SELECT revenue, impressions, accept_rate
GROUP BY surface
SINCE last_30d
ORDER BY revenue DESC
```

<div id="timezones">
  ## المناطق الزمنية
</div>

افتراضيًا، تعمل الاستعلامات بتوقيت UTC. يمكنك تجاوز المنطقة الزمنية بحيث تعكس النتائج المجمّعة حسب التاريخ التوقيت المحلي (انظر [تعيين منطقة زمنية](/ar/aftersell/reports_explorer#setting-a-timezone) لخطوات شريط الأدوات).

<Note>
  الاستعلامات التي تتضمن **Impressions** أو **Accept Rate** أو **Revenue Per Visit** تجمّع التواريخ دائمًا بتوقيت UTC، بغض النظر عن المنطقة الزمنية التي تختارها، لأن مصدرها تجميع يومي يُبلغ عنه بأيام UTC. إذا جمع استعلام أحد هذه المقاييس مع مقاييس أخرى، فإن مجموعة النتائج بأكملها تعود إلى UTC حتى تبقى فترات التواريخ متوافقة.
</Note>

<div id="the-timezone-clause">
  ### عبارة TIMEZONE
</div>

حدد منطقة زمنية مباشرةً في AQL باستخدام عبارة `TIMEZONE`، التي تظهر بين `CHART` و`ORDER BY`:

```aql theme={"theme":{"light":"snazzy-light","dark":"github-dark"}}
SELECT ...
CHART ...
TIMEZONE "Asia/Tokyo"
ORDER BY ...
```

عند وجودها، تتجاوز العبارة التحديد في شريط الأدوات لهذا الاستعلام، وتُحفظ عند الحفظ وإعادة التحميل.

<div id="available-timezones">
  ### المناطق الزمنية المتاحة
</div>

تقبل أداة الاختيار (وعبارة `TIMEZONE`) مجموعة مغلقة من عشر مناطق. تُرفض أي منطقة زمنية أخرى من IANA باعتبارها غير مدعومة.

| المنطقة الزمنية | مثال على الموقع |
| - | - |
| UTC | التوقيت العالمي المنسق |
| America/New\_York | نيويورك (ET) |
| America/Chicago | شيكاغو (CT) |
| America/Denver | دنفر (MT) |
| America/Los\_Angeles | لوس أنجلوس (PT) |
| Europe/London | لندن (GMT/BST) |
| Europe/Paris | باريس (CET/CEST) |
| Asia/Tokyo | طوكيو (JST) |
| Asia/Singapore | سنغافورة (SGT) |
| Australia/Sydney | سيدني (AEST/AEDT) |

<div id="account-default-and-how-timezone-affects-results">
  ### الإعداد الافتراضي للحساب وكيف تؤثر المنطقة الزمنية على النتائج
</div>

إذا كان **Lock reporting timezone** مفعّلًا في إعدادات التحليلات، فإن اختيار **Account default** يستخدم تلك المنطقة الزمنية المقفلة (يعرض شريط الأدوات المنطقة المحددة، على سبيل المثال **Timezone: Account default (Paris (CET))**). تقبل صفحة إعدادات التحليلات قائمة IANA الكاملة، لكن Reports تلتزم فقط بالمناطق العشر المذكورة أعلاه؛ وإذا لم تكن منطقتك المقفلة إحداها، فإن **Account default** تتحول بصمت إلى UTC. إذا لم يكن **Lock reporting timezone** مفعّلًا، فإن **Account default** تعود إلى UTC.

عند تعيين منطقة زمنية، يستخدم تجميع التواريخ التوقيت المحلي بدلًا من UTC. على سبيل المثال، الحدث الذي يقع في `2026-03-29T01:30:00Z` يقع في 28 مارس في نيويورك (ET) لكنه يقع في 29 مارس في باريس (CET). الاستعلامات التي لا تحتوي على منطقة زمنية، بما في ذلك المحفوظة سابقًا، تستمر في العمل بتوقيت UTC.
