سحب التصدير في Power BI Desktop
حمّل صفوف الاستجابات مباشرة في Power BI Desktop باستخدام رمز الوصول الخارجي. لا يلزم ربط Microsoft في البوابة لهذه الطريقة.
مرتبط: نظرة عامة على Power BI · الدفع إلى Power BI
قبل البدء
- انشر الاستبيان وجمع الاستجابات عبر قناة توزيع.
- انسخ الرمز المختصر للاستبيان من رابط الاستبيان أو تبويب التكاملات.
- احصل على رمز الوصول الخارجي من الملف الشخصي.
اختصار من البوابة
- افتح التكاملات → Power BI → وسّع الطريقة الثانية: سحب التصدير في Power BI Desktop.
- انسخ نقطة نهاية التصدير، رأس التفويض، ومقتطف Power Query (M).
- الصق استعلام Power Query في Power BI Desktop (انظر أدناه).
1. نقطة نهاية التصدير
استبدل {short_code} بالرمز المختصر للاستبيان.
نقطة النهاية
GET https://api-cxm.akwad.sa/api/v1/integrations/surveys/{short_code}/responses/export2. الرؤوس
Accept
Accept: application/jsonAuthorization
X-External-Access-Token: {your_token}3. معاملات الاستعلام
| المعامل | الافتراضي | الوصف |
|---|---|---|
page | 1 | رقم الصفحة |
per_page | 100 | صفوف لكل صفحة (الحد الأقصى 100) |
sort | created_at | created_at أو start_time أو end_time |
direction | desc | asc أو desc |
search | - | بحث نصي اختياري في معرّف الاستجابة أو جهة الاتصال أو اسم القناة |
since | - | طابع ISO8601 - إرجاع الصفوف حيث created_at >= since (تحديث تدريجي) |
include_pii | true | عند false، حذف أعمدة email وphone وip |
مثال طلب تدريجي:
GET
https://api-cxm.akwad.sa/api/v1/integrations/surveys/{short_code}/responses/export?since=2026-06-01T00:00:00Z&include_pii=false4. شكل الاستجابة
حمولة النجاح (عقد المنتج):
JSON
{
"success": true,
"message": "Export completed.",
"data": {
"columns": [
"response_id",
"created_at",
"status",
"collector_name",
"q_nps",
"q_feedback"
],
"rows": [
{
"response_id": "01932a1b-2c3d-7890-abcd-ef1234567890",
"created_at": "2026-06-08T12:00:00+00:00",
"status": "pending",
"collector_name": "Web Link 1",
"q_nps": 9,
"q_feedback": "Great service"
}
],
"meta": {
"current_page": 1,
"per_page": 100,
"total": 250,
"last_page": 3
}
}
}columns- أعمدة بيانات وصفية ثابتة بالإضافة إلى عمود لكل سؤال (رمز السؤال إن وُجد، وإلاq_{question_id}).rows- كائنات مسطّحة بمفاتيح أسماء الأعمدة (بدونanswers[]متداخلة).meta- ترقيم الصفحات للتصدير الكامل؛ استخدمsinceللتحديث التدريجي في استعلامات مخصصة.
5. Power BI Desktop (يدوي)
- الحصول على البيانات → ويب.
- اختر متقدم والصق رابط التصدير (أضف
?page=1&per_page=100إن لزم). - أضف الرأس
X-External-Access-Tokenمع رمزك. - وسّع
data→rows، أو استخدم مقتطف Power Query أدناه (موصى به - يحمّل كل الصفحات تلقائياً).
6. Power Query (M) - كل الصفحات
استبدل {short_code} و{your_token}. يطابق هذا المقتطف ما يُنشأ في حوار CXM.
Power Query
powerquery
let
// Step 1: Define API base URL
baseUrl = "https://api-cxm.akwad.sa/api/v1/integrations/surveys/{short_code}/responses/export",
// Step 2: Define headers with your token
headers = [
#"Content-Type" = "application/json",
#"X-External-Access-Token" = "{your_token}"
],
// Step 3: Set up request options
options = [
Headers = headers,
ManualStatusHandling = {400, 401, 403, 404}
],
// Step 4: Fetch and expand a single page
GetPage = (page as number) as table =>
let
pageUrl = baseUrl & "?page=" & Number.ToText(page) & "&per_page=100",
response = Web.Contents(pageUrl, options),
json = Json.Document(response),
data = json[data],
columnsList = data[columns],
rows = data[rows],
toTable = Table.FromList(rows, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
expanded = Table.ExpandRecordColumn(toTable, "Column1", columnsList, columnsList)
in
expanded,
// Step 5: Read total pages from the first page
firstJson = Json.Document(Web.Contents(baseUrl & "?page=1&per_page=100", options)),
lastPage = try firstJson[data][meta][last_page] otherwise 1,
safeLastPage = if lastPage < 1 then 1 else lastPage,
// Step 6: Fetch all pages and combine rows
pages = List.Numbers(1, safeLastPage),
#"Combined Pages" = Table.Combine(List.Transform(pages, each GetPage(_)))
in
#"Combined Pages"خصوصية Power BI Desktop
إذا طُلب منك مستويات الخصوصية، اضبط نقطة نهاية API على تنظيمي أو عدّل إعدادات الخصوصية حتى يتمكن Web.Contents من دمج الصفحات.
7. الأمان والبيانات الشخصية
- عامل رمز الوصول الخارجي ككلمة مرور. أعد إنشاءه من الملف الشخصي إذا تسرّب.
- اضبط
include_pii=falseعندما لا تحتاج البريد أو الهاتف أو IP في التقارير. - يتبع الوصول للتصدير نفس صلاحيات مساحة العمل لعرض الاستبيان في البوابة.