การใช้ API SDMX-JSON ในการเข้าถึงชุดข้อมูลสถิติ
เกี่ยวกับ API
สำนักงานสถิติแห่งชาติได้จัดเตรียมช่องทางบริการเข้าถึงชุดข้อมูลสถิติด้วย RESTful API และ ซึ่งจะทำให้นักพัฒนาระบบสารสนเทศสามารถเรียกใช้ข้อมูลสถิติจากระบบได้โดยตรงบนระบบสื่อสารข้อมูลอิเล็กทรอนิกส์ ตามข้อกำหนด SDMX-JSON ซึ่งเป็นรูปแบบที่ได้รับการยอมรับและใช้งานกันอย่างแพร่หลาย เช่น OECD และ World Bank เป็นต้น
SDMX-JSON คืออะไร
SDMX-JSON คือ รูปแบบชุดข้อความ (Message) เพื่อการแลกเปลี่ยนบนระบบสื่อสารข้อมูลอิเล็กทรอนิกส์ โดยมีโครงสร้างตามข้อกำหนดมาตรฐาน SDMX-IM ประกอบด้วย ค่าสังเกต (Observation value) (เช่น จำนวนประชากร) มิติ (Dimension) (เช่น มิติพื้นที่และมิติ เวลา) และ คุณลักษณะ (Attributes) (เช่น สถานะ)
สำหรับชุดข้อความ (Message) ที่ส่งกลับนั้นจัดอยู่ในรูปแบบ JSON (JavaScript Object Notation) แบ่งออกเป็น ๓ ส่วน คือ ส่วนหัว (header) ส่วนโครงสร้างข้อมูล (structure) และ ส่วนชุดข้อมูล(dataSets)
ส่วนหัว (header) ประกอบด้วย รหัส (id), request, ผู้ส่ง(sender), ผู้รับ(Receiver)
ส่วนโครงสร้างข้อมูล (structure) ประกอบด้วย มิติ (dimesion) คุณลักษณะ (Attributes) ชุดข้อมูล (dataSet) อนุกรม(series) และ ค่าสังเกต
ส่วนชุดข้อมูล (dataSets) ข้อมูลและแอตทริบิวต์ที่ระบุในชุดข้อมูลและซีรีส์มีค่าเดียวกันสำหรับการสังเกตทั้งหมดตลอดทั้งชุดข้อมูลหรือซีรีส์ตามลำดับ
การระบุค่าสังเกตจะไม่ซ้ำกันด้วยมีดัชนีของค่ามิติที่เกี่ยวข้องตามที่กำหนดไว้ในส่วน “โครงสร้าง” ของชุดข้อความในระดับซีรีส์และระดับค่าสังเกตโดยค่าดัชนีจะเรียงลำดับตามลำดับมิติที่กำหนดไว้ในส่วน “โครงสร้าง” ของข้อความและคั่นระหว่างกันด้วยอักขระโคลอน
ค่าของคุณลักษณะที่ระบุในระดับอนุกรมและระดับการสังเกตจะถูกระบุผ่านดัชนีที่กำหนดไว้ในส่วน “โครงสร้าง” ของข้อความ
รูปแบบการเรียกชุดข้อมูลสถิติแบบ SDMX-JSON
คำสั่งการเรียกชุดข้อมูลสำหรับ SDMX REST API ที่จัดทำขึ้น ต้องกำหนดตามรูปแบบดังนี้
https://dws.nso.go.th/api/sdmx-json/data/< dataset identifier >/< filter expression >/< agency name >[ ?< additional parameters >]
ตัวอย่างเช่น https://dws.nso.go.th/api/sdmx-json/data/pop_5/10+11.t+1+2/nso?startTime=2555&endTime=2560
ส่วน < dataset identifier > เป็นส่วนระบุรหัสรายการข้อมูลสถิติที่ต้องการเรียกใช้ เช่น pop_5, pop_8, pop_10 ฯลฯ สามารถค้นหารหัสของรายการข้อมูลได้ที่ เมนูสืบค้นข้อมูลรายการสถิติ ส่วน < filter expression > เป็นส่วนระบุรหัสของมิติข้อมูล ประกอบด้วย 2 ส่วนคือ รหัสมิติพื้นที่ และรหัสมิติการจัดจำแนก โดยใช้สัญลักษณ์ “.” เป็นตัวแบ่งแยกมิติ และใช้สัญลักษณ์ “+” เป็นตัวแบ่งแยกค่าของรหัสในมิตินั้น https://dws.nso.go.th/api/sdmx-json/data/pop_5/2+3.1+2/ กรณีที่ไม่ทราบรหัสของมิติการจัดจำแนก สามารถระบุเพียงรหัสพื้นที่ เพื่อดึงข้อมูลทุกมิติการจัดจำแนก เช่น https://dws.nso.go.th/api/sdmx-json/data/pop_5/2+3/ กรณีที่ไม่ทราบรหัสพื้นที่ สามารถระบุ “all+reg” เพื่อดึงข้อมูลทุกภาค หรือระบุ “all+cwt” เพื่อดึงข้อมูลทุกจังหวัด เช่น https://dws.nso.go.th/api/sdmx-json/data/pop_5/all+reg/ หรือ ส่วน < agency name > เป็นส่วนระบุรหัสของหน่วยงานเจ้าของข้อมูล เช่น สำนักงานสถิติแห่งชาติ รหัส NSO ระบุดังนี้ https://dws.nso.go.th/api/sdmx-json/data/pop_5/5.t/nso หากไม่ระบุหรือระบุ “all” จะเป็นการดึงข้อมูลของทุกหน่วยงานเจ้าของข้อมูล ส่วน ?< additional parameters > เป็นส่วนเพิ่มเติมมีตัวแปร ดังนี้ atk เป็นการระบุคีย์ access token เพื่อใช้ในการเข้าถึงการเรียกใช้ข้อมูลในฐานข้อมูล ดังนี้ https://dws.nso.go.th/api/sdmx-json/data/pop_5/all+reg/nso?atk=d95fcae6211065cea4a26fa099adbd3d *หากไม่ระบุจะไม่สามารถเข้าถึงข้อมูลได้ สามารถขอคีย์ access token ได้จากการลงทะเบียนขอใช้งาน API startTime และ endTime เป็นการระบุช่วงเวลาเริ่มต้น และสิ้นสุดของรายการข้อมูลต้องการเรียกใช้ เช่น การต้องข้อมูลปี 2555-2560 ให้ระบุ ?startTime=2555&endTime=2560 ดังนี้ https://dws.nso.go.th/api/sdmx-json/data/pop_8/10.t/dopa?startTime=2555&endTime=2560ตัวแปรพารามิเตอร์ URL
คำอธิบาย
(…/รหัสพื้นที่ . รหัสการจัดจำแนก/ ) เช่น
https://dws.nso.go.th/api/sdmx-json/data/pop_5/all+cwt/
ตัวอย่างการใช้งาน
1. การเรียกใช้งานข้อมูลที่ยังไม่ทราบรหัสของมิติข้อมูลดังกล่าว เช่น ต้องการเรียกใช้งานข้อมูลจำนวนประชากร (รหัส pop_5) ระดับจังหวัด ให้เรียกใช้งานดังนี้ https://dws.nso.go.th/api/sdmx-json/data/pop_5/all+cwt
2. การเรียกใช้งานข้อมูลเฉพาะรหัสมิติพื้นที่ ที่ต้องการ เช่น ต้องการเรียกใช้งานข้อมูลจำนวนประชากร (รหัส pop_5) ภาคกลาง (รหัส 2) เท่านั้น ให้เรียกใช้งานดังนี้ https://dws.nso.go.th/api/sdmx-json/data/pop_5/2 หากต้องการเรียกใช้งานข้อมูล ภาคกลาง (รหัส 2) และภาคเหนือ (รหัส 3) ให้เรียกใช้งานดังนี้ https://dws.nso.go.th/api/sdmx-json/data/pop_5/2+3 (ใช้สัญลักษณ์ “+” เป็นตัวแบ่งแยกค่าของรหัส)
3. การเรียกใช้งานข้อมูลเฉพาะรหัสมิติจัดจำแนกที่ต้องการ เช่น ต้องการเรียกใช้งานข้อมูลจำนวนประชากร (รหัส pop_5) ภาคกลาง (รหัส 2) และเพศชาย (รหัส 1) เท่านั้น ให้เรียกใช้งานดังนี้ https://dws.nso.go.th/api/sdmx-json/data/pop_5/2.1/ (พื้นที่(2) . การจัดจำแนก(1) ใช้สัญลักษณ์ “.” เป็นตัวแบ่งแยกมิติ)
4. การเรียกใช้งานข้อมูลตามช่วงเวลาของรายการข้อมูลที่ต้องการ เช่น ต้องการเรียกใช้งานข้อมูลจำนวนคนเกิด (รหัส pop_8) กรุงเทพมหานคร (รหัส 10) ตั้งแต่ปี 2555 ถึง 2560 ให้เรียกใช้งานดังนี้ https://dws.nso.go.th/api/sdmx-json/data/pop_8/10?startTime=2555&endTime=2560
ขั้นตอนการขอใช้งาน API
ผู้ที่ต้องการใช้งาน API สามารถติดต่อขอใช้งาน หรือสอบถามข้อมูลเพิ่มเติมในการใช้งาน API ได้ที่
กองนโยบายและวิชาการสถิติ กลุ่มระบบภูมิสารสนเทศสถิติ
โทรศัพท์: 02-141-7410 หรือ 02-142-1288