قائمة وثائق المطورين

بيانات السوق في Excel باستخدام Power Query

مبتدئ

حمّل الأسواق والأداء حسب أيام الأسبوع في جداول Excel تتحدّث بنقرة واحدة.

احفظ المفتاح في خلية مسمّاة

ضع مفتاحك في خلية على ورقة يمكنك إخفاؤها، ثم سمِّ الخلية ApiKey من مربع الاسم (Name Box). تقرأ الاستعلامات المفتاح من هناك، فلا يتكرر في كل استعلام.

أنشئ استعلام Markets

اختر Data → Get Data → From Other Sources → Blank Query، وافتح Advanced Editor والصق ما يلي:

Power Query (M)
let
    BaseUrl = "https://jokerprice.com",
    ApiKey = Excel.CurrentWorkbook(){[Name = "ApiKey"]}[Content]{0}[Column1],
    Response = Json.Document(Web.Contents(BaseUrl, [
        RelativePath = "api/v1/markets",
        Headers = [Authorization = "Bearer " & ApiKey]
    ])),
    Markets = Table.FromList(Response[markets], Splitter.SplitByNothing(), {"m"}),
    Base = Table.ExpandRecordColumn(Markets, "m", {"slug", "name", "listings", "nightly", "tracker"}),
    Nightly = Table.ExpandRecordColumn(Base, "nightly", {"median", "p25", "p75"}, {"median_sar", "p25_sar", "p75_sar"}),
    Tracker = Table.ExpandRecordColumn(Nightly, "tracker", {"maturity", "occupancy", "adr", "monthlyRevenuePerListing"}, {"maturity", "occupancy", "adr_sar", "revenue_per_listing_month"}),
    Typed = Table.TransformColumnTypes(Tracker, {{"listings", Int64.Type}, {"median_sar", type number}, {"p25_sar", type number}, {"p75_sar", type number}, {"occupancy", Percentage.Type}, {"adr_sar", type number}, {"revenue_per_listing_month", type number}})
in
    Typed

سمِّ الاستعلام Markets واختر Close & Load.

أجب عن المطالبات

عندما يسألك Excel عن طريقة الاتصال بالعنوان، اختر Anonymous: فالمفتاح يُرسل في الترويسة لا بتسجيل دخول إلى Windows أو الويب. وإذا ظهرت رسالة Formula.Firewall، فافتح Data → Get Data → Query Options → Privacy لهذا المصنف، واضبط المصنف ومصدر الويب على مستوى الخصوصية نفسه (مثل Organizational).

أضف الأداء حسب أيام الأسبوع

يقرأ استعلام ثانٍ /api/v1/metrics لمدينة واحدة ويوسّع byWeekday. اليوم 0 هو الأحد.

Power Query (M)
let
    BaseUrl = "https://jokerprice.com",
    ApiKey = Excel.CurrentWorkbook(){[Name = "ApiKey"]}[Content]{0}[Column1],
    City = "riyadh",
    Response = Json.Document(Web.Contents(BaseUrl, [
        RelativePath = "api/v1/metrics",
        Query = [city = City, past_days = "90", forward_days = "30"],
        Headers = [Authorization = "Bearer " & ApiKey]
    ])),
    Days = Table.FromRecords(Response[metrics][byWeekday]),
    Named = Table.AddColumn(Days, "day", each {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}{[weekday]}, type text),
    Typed = Table.TransformColumnTypes(Named, {{"occupancy", Percentage.Type}, {"adr", type number}})
in
    Typed

أدرج مخططًا عموديًا على النتيجة لترى ارتفاع الطلب في عطلة نهاية الأسبوع.

التحديث

يعيد Data → Refresh All تشغيل الاستعلامين، أي طلبين. ومن Query Properties يمكنك التحديث عند فتح الملف؛ وتجنّب الفواصل الزمنية التلقائية القصيرة، فتقارير السوق تتغير مرة كل 30 دقيقة على الأكثر.