بيانات السوق في Excel باستخدام Power Query
مبتدئ
حمّل الأسواق والأداء حسب أيام الأسبوع في جداول Excel تتحدّث بنقرة واحدة.
احفظ المفتاح في خلية مسمّاة
ضع مفتاحك في خلية على ورقة يمكنك إخفاؤها، ثم سمِّ الخلية ApiKey من مربع الاسم (Name Box). تقرأ الاستعلامات المفتاح من هناك، فلا يتكرر في كل استعلام.
أنشئ استعلام Markets
اختر Data → Get Data → From Other Sources → Blank Query، وافتح Advanced Editor والصق ما يلي:
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 هو الأحد.
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 دقيقة على الأكثر.