DSPL ย่อมาจาก Dataset Publishing Language ชุดข้อมูลที่อธิบายไว้ใน DSPL สามารถนำเข้าไปยัง Google Public Data Explorer เครื่องมือที่ทําให้มีการสํารวจด้วยภาพอย่างละเอียด
หมายเหตุ: วิธีอัปโหลดข้อมูลไปยัง Google Public Data โดยใช้เครื่องมืออัปโหลดข้อมูลสาธารณะ คุณต้องมีบัญชี Google
บทแนะนำนี้จะให้ตัวอย่างทีละขั้นตอนเกี่ยวกับวิธีเตรียมความพร้อม ชุดข้อมูล DSPL
ชุดข้อมูล DSPL คือแพ็กเกจที่มีไฟล์ XML และชุดของ ไฟล์ CSV ไฟล์ CSV เป็นตารางง่ายๆ ที่มีข้อมูลของ ชุดข้อมูล ไฟล์ XML จะอธิบายข้อมูลเมตาของชุดข้อมูล รวมถึงข้อมูลเมตาที่ให้ข้อมูล เช่น คำอธิบายการวัด ข้อมูลเมตาเชิงโครงสร้าง เช่น การอ้างอิงระหว่างตาราง ข้อมูลเมตาช่วยให้ ผู้ใช้ที่ไม่ใช่ผู้เชี่ยวชาญจะสำรวจและแสดงภาพข้อมูลของคุณ
ข้อกำหนดเบื้องต้นเพียงข้อเดียวในการทำความเข้าใจบทแนะนำนี้คือ ความเข้าใจเกี่ยวกับ XML ความเข้าใจบางส่วนเกี่ยวกับแนวคิดง่ายๆ เกี่ยวกับฐานข้อมูล (เช่น ตาราง คีย์หลัก) อาจช่วยได้ แต่ไม่จำเป็น เพื่อเป็นข้อมูลอ้างอิง ไฟล์ XML ที่เสร็จสมบูรณ์ และ ชุดข้อมูลที่สมบูรณ์ ที่เชื่อมโยงกับบทแนะนำนี้ก็สามารถตรวจสอบได้เช่นกัน
ภาพรวม
ก่อนที่จะเริ่มสร้างชุดข้อมูล ต่อไปนี้เป็นภาพรวมระดับสูงของ ชุดข้อมูล DSPL ประกอบด้วยอะไรบ้าง
- ข้อมูลทั่วไป: เกี่ยวกับชุดข้อมูล
- แนวคิด: คำจำกัดความของ "สิ่งต่างๆ" นั่น ปรากฏในชุดข้อมูล (เช่น ประเทศ อัตราการว่างงาน เพศ etc.)
- ส่วนแบ่ง: การผสมผสานแนวคิดที่มี ข้อมูล
- ตาราง: ข้อมูลสำหรับแนวคิดและสไลซ์ ตารางแนวคิด ระงับการแจงนับและแบ่งตารางเก็บข้อมูลทางสถิติ
- หัวข้อ: ใช้เพื่อจัดระเบียบแนวคิดของชุดข้อมูล ในลำดับชั้นที่มีความหมายผ่านการติดป้ายกำกับ
หากต้องการอธิบายแนวคิดแบบนามธรรมเหล่านี้ ให้พิจารณาชุดข้อมูล (ที่มี ข้อมูลจำลอง) ที่ใช้ตลอดบทแนะนำนี้: อนุกรมเวลาทางสถิติสำหรับ จำนวนประชากรและผู้ว่างงาน ซึ่งคิดจากการรวมประเทศต่างๆ รัฐของสหรัฐอเมริกา และเพศ
ชุดข้อมูลตัวอย่างนี้ระบุแนวคิดต่อไปนี้
- country
- gender
- ประชากร
- รัฐ
- อัตราการว่างงาน
- ปี
แนวคิดเชิงหมวดหมู่ เช่น รัฐ มีความเชื่อมโยงกับแนวคิด tables ซึ่งแจกแจงค่าที่เป็นไปได้ทั้งหมด (แคลิฟอร์เนีย แอริโซนา ฯลฯ) แนวคิดอาจมีคอลัมน์เพิ่มเติมสำหรับคุณสมบัติ เช่น ชื่อหรือประเทศของรัฐ
Slices กำหนดชุดค่าผสมแต่ละชุดที่มี
ในชุดข้อมูล ส่วนหนึ่งๆ จะมีมิติข้อมูลและ
เมตริก 3 รายการ ในภาพด้านบน ขนาดเป็นสีน้ำเงิน
จะเป็นสีส้ม ในตัวอย่างนี้ ส่วนแบ่ง
gender_country_slice
มีข้อมูลสำหรับเมตริก
population
และขนาด country
year
และ gender
ส่วนอีกส่วนหนึ่งชื่อว่า
country_slice
ระบุจำนวนประชากรรายปีทั้งหมด (เมตริก) สำหรับ
ประเทศ
นอกจากมิติข้อมูลและเมตริกแล้ว ส่วนแบ่งยังอ้างอิง tables ซึ่งมีข้อมูลจริง
เราลองมาดูการสร้างชุดข้อมูลนี้แบบทีละขั้นตอนกัน DSPL
ข้อมูลชุดข้อมูล
ในการเริ่มต้นใช้งาน เราต้องสร้างไฟล์ XML สำหรับชุดข้อมูล ต่อไปนี้คือ จุดเริ่มต้นของคำอธิบาย DSPL สำหรับชุดข้อมูลตัวอย่างของเรา
<?xml version="1.0" encoding="UTF-8"?> <dspl targetNamespace="http://www.stats-bureau.com/mystats" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.google.com/dspl/2010" xmlns:time="http://www.google.com/publicdata/dataset/google/time" xmlns:geo="http://www.google.com/publicdata/dataset/google/geo" xmlns:entity="http://www.google.com/publicdata/dataset/google/entity" xmlns:quantity="http://www.google.com/publicdata/dataset/google/quantity"> <import namespace="http://www.google.com/publicdata/dataset/google/time"/> <import namespace="http://www.google.com/publicdata/dataset/google/entity"/> <import namespace="http://www.google.com/publicdata/dataset/google/geo"/> <import namespace="http://www.google.com/publicdata/dataset/google/quantity"/> <info> <name> <value>My statistics</value> </name> <description> <value>Some very interesting statistics about countries</value> </description> <url> <value>http://www.stats-bureau.com/mystats/info.html</value> </url> </info> <provider> <name> <value>Bureau of Statistics</value> </name> <url> <value>http://www.stats-bureau.com</value> </url> </provider> ... </dspl>
คำอธิบายชุดข้อมูลเริ่มต้นด้วย <dspl>
ระดับบนสุด
แอตทริบิวต์ targetNamespace
มี URI ที่
ระบุชุดข้อมูลนี้ได้โดยไม่ซ้ำกัน เนมสเปซของชุดข้อมูล
สำคัญเมื่อเผยแพร่ชุดข้อมูล เนื่องจากจะเป็นตัวระบุทั่วโลกของ
ชุดข้อมูลของคุณ และวิธีการช่วยให้ผู้อื่นอ้างอิงถึงชุดข้อมูลนั้น
โปรดทราบว่าระบบอาจละเว้นแอตทริบิวต์ targetNamespace
ใน
ในกรณีนี้ เนมสเปซที่ไม่ซ้ำกันจะสร้างขึ้นโดยอัตโนมัติเมื่อชุดข้อมูล
นำเข้าแล้ว
การใช้ข้อมูลจากชุดข้อมูลอื่นๆ
ชุดข้อมูลสามารถนำคำจำกัดความและข้อมูลจากชุดข้อมูลอื่นๆ มาใช้ซ้ำได้ด้วยการนำเข้า
ชุดข้อมูลเหล่านั้น เอลิเมนต์ <import>
แต่ละรายการจะระบุ
เนมสเปซของชุดข้อมูลอื่นที่ชุดข้อมูลนี้จะอ้างอิง
ในชุดข้อมูลตัวอย่าง เราต้องการคำจำกัดความบางอย่างจาก http://www.google.com/publicdata/dataset/google/quantity (ชุดข้อมูลที่ Google สร้างขึ้นซึ่งมีแนวคิดที่เป็นประโยชน์ในการนิยาม จำนวน) และจากชุดข้อมูลเวลา เอนทิตี และ ภูมิศาสตร์ ซึ่งให้ คำนิยามที่เกี่ยวข้องกับเวลา เอนทิตี และภูมิศาสตร์ ตามลำดับ
องค์ประกอบ <dspl>
ด้านบนมีคำนำหน้าเนมสเปซ
การประกาศ (เช่น xmlns:time="http://..."
) สำหรับแต่ละเซสชัน
ของชุดข้อมูลที่นำเข้า ต้องมีการประกาศคำนำหน้าเพื่ออ้างอิง
จากชุดข้อมูลอื่นๆ ได้อย่างกระชับ ตัวอย่างเช่น
time:year
อ้างอิงคำจำกัดความของ year
ใน
ชุดข้อมูลที่นำเข้าซึ่งมีเนมสเปซที่เชื่อมโยงกับคำนำหน้า
time
ข้อมูลชุดข้อมูลและผู้ให้บริการ
องค์ประกอบ <info>
มีข้อมูลทั่วไปเกี่ยวกับ
ชุดข้อมูล ได้แก่ ชื่อ คําอธิบาย และ URL ที่ใส่ข้อมูลเพิ่มเติมได้
พบ
องค์ประกอบ <provider>
มีข้อมูลเกี่ยวกับ
ผู้ให้บริการชุดข้อมูล: ชื่อและ URL ที่คุณสามารถดูข้อมูลเพิ่มเติม
ที่พบ (โดยทั่วไปจะเป็นหน้าแรกของผู้ให้บริการข้อมูล)
การกำหนดแนวคิด
เมื่อเราให้ข้อมูลทั่วไปเกี่ยวกับชุดข้อมูลแล้ว เราพร้อมแล้วที่จะเริ่มกำหนดเนื้อหา เป้าหมายต่อไปของเราคือการเพิ่ม สถิติประชากรของประเทศต่างๆ ในช่วง 50 ปีที่ผ่านมา
สิ่งแรกที่เราต้องทำคือระบุนิยามของแนวคิด ของประชากร ประเทศ และปี ใน DSPL คำจำกัดความเหล่านี้เรียกว่า แนวคิด
แนวคิดคือคำจำกัดความของประเภทข้อมูลที่ปรากฏใน ชุดข้อมูล ค่าข้อมูลที่สอดคล้องกับแนวคิดที่กำหนดจะเรียกว่า อินสแตนซ์ของแนวคิดนั้น
ประชากร
มาเริ่มที่การกำหนดแนวคิดเกี่ยวกับประชากรกันก่อน ใน
เอกสาร DSPL แนวคิดที่กำหนดไว้ใน <concepts>
ที่วางไว้หลังชุดข้อมูลและข้อมูลผู้ให้บริการ
นี่คือแนวคิดเกี่ยวกับประชากรที่มีข้อมูลที่จำเป็นเพียงเล็กน้อย
สำหรับแนวคิดใดก็ได้: id
(ตัวระบุที่ไม่ซ้ำกัน), name
และ
type
<dspl ...> ... <concepts> <concept id="population"> <info> <name> <value>Population</value> </name> </info> <type ref="integer"/> </concept> ... </concepts>
ตัวอย่างนี้จะมีการทำงานดังนี้
- ทุกแนวคิดต้องมี
id
ที่ระบุได้โดยไม่ซ้ำกัน แนวคิดภายในชุดข้อมูล ซึ่งหมายความว่าไม่มีการกำหนดแนวคิด 2 ประการ ชุดข้อมูลเดียวกันก็อาจมีรหัสเดียวกันได้ - เช่นเดียวกับชุดข้อมูลและผู้ให้บริการ
องค์ประกอบ
<info>
มีข้อความเกี่ยวกับ เช่น ชื่อและคำอธิบาย - องค์ประกอบ
<type>
จะระบุประเภทข้อมูลสำหรับ อินสแตนซ์ของแนวคิด (หรือก็คือ "ค่า") ในตัวอย่างนี้ ประเภทของpopulation
คือinteger
DSPL รองรับข้อมูลประเภทต่อไปนี้string
integer
float
boolean
date
ประเทศ
คราวนี้มาเขียนคำจำกัดความของแนวคิดประเทศกัน
<concept id="country"> <info> <name><value>Country</value></name> <description> <value>My list of countries.</value> </description> </info> <type ref="string"/> <property id="name"> <info> <name><value>Name</value></name> <description> <value>The official name of the country</value> </description> </info> <type ref="string" /> </property> <table ref="countries_table" /> </concept>
คำนิยามแนวคิดประเทศจะเริ่มเหมือนกับข้อก่อนหน้า
กับ id
, info
และ type
ค่าแนวคิด
แนวคิดเชิงหมวดหมู่ เช่น ประเทศต่างๆ นั้นมีการแจกแจงที่เป็นไปได้ทั้งหมด
อินสแตนซ์ กล่าวคือ คุณสามารถระบุประเทศที่เป็นไปได้ทั้งหมดที่สามารถ
มีการอ้างอิงถึง แต่การจะทำเช่นนี้ได้ แต่ละประเทศจะต้องมีตัวระบุที่ไม่ซ้ำกัน
ตัวอย่างนี้ใช้
รหัสประเทศ ISO เพื่อระบุประเทศ รหัสเหล่านี้คือ
ประเภท string
ในตัวอย่างนี้ คุณไม่จำเป็นต้องใช้โค้ด ISO คุณ สามารถใช้ชื่อประเทศได้ แต่ชื่อจะแตกต่างกันไปตามภาษา เปลี่ยนแปลงได้เมื่อเวลาผ่านไป และไม่ได้ใช้กับชุดข้อมูลต่างๆ อย่างสอดคล้องกันเสมอไป สำหรับประเทศต่างๆ และสำหรับแนวคิดเชิงหมวดหมู่โดยทั่วไป ฝึกฝนในการเลือก เนื้อหาแบบสั้น ความเสถียร การใช้งานทั่วไป และไม่ขึ้นอยู่กับภาษา ตัวระบุ (หากมี)
คุณสมบัติของแนวคิด
นอกจาก id
แนวคิดประเทศยังมี
องค์ประกอบ <property>
ที่ระบุชื่อประเทศ
กล่าวคือ ชื่อประเทศ ("ไอร์แลนด์") เป็นพร็อพเพอร์ตี้
ของประเทศที่มี id
IE และ DSPL ให้บริการที่พักอย่างไร
ข้อมูลเพิ่มเติมที่มีโครงสร้างเกี่ยวกับอินสแตนซ์ของแนวคิด
ที่พักมี id
เช่นเดียวกับในแนวคิด
info
และ type
ข้อมูลแนวคิด
สุดท้าย แนวคิดประเทศมีองค์ประกอบ <table>
องค์ประกอบนี้อ้างอิงตารางที่แจกแจงรายการ
ประเทศ
การใช้ตารางเหมาะสำหรับบางแนวคิด แต่ไม่เหมาะกับแนวคิดอื่นๆ สำหรับ อย่างไรก็ตาม การแจกแจงค่าที่เป็นไปได้ทั้งหมดสำหรับ ประชากรแนวคิด แต่ถ้าคุณอ้างอิงตารางสำหรับ แนวคิด ตารางนั้นต้องมีอินสแตนซ์ทั้งหมดของแนวคิดนั้นๆ ก็ต้องระบุทุกประเทศ ไม่ใช่แค่ตัวอย่าง
ชุดข้อมูลกำหนดตาราง countries_table
ดังนี้
... <tables> <table id="countries_table"> <column id="country" type="string"/> <column id="name" type="string"/> <data> <file format="csv" encoding="utf-8">countries.csv</file> </data> </table> ... </tables>
ตารางประเทศจะระบุคอลัมน์ของตารางและประเภท
และอ้างอิงไฟล์ CSV ที่มีข้อมูลนั้น CSV นี้สามารถเป็น
รวมและอัปโหลดกับชุดข้อมูล XML หรือเข้าถึงจากระยะไกลผ่าน HTTP, HTTPS
หรือ FTP ในกรณีหลัง คุณจะต้องแทนที่ countries.csv
ด้วย
URL ตัวอย่างเช่น http://www.myserver.com/mydata/countries.csv
ไม่ว่าจะเก็บข้อมูลไว้ที่ไหน ไฟล์ CSV จะมีลักษณะดังนี้
country, name AD, Andorra AF, Afghanistan AI, Anguilla AL, Albania US, United States
แถวแรกของตารางจะแสดงรหัสคอลัมน์ตามที่ระบุไว้ใน DSPL
คำจำกัดความ table
แต่ละแถวต่อไปนี้จะสอดคล้องกับ 1
ตัวอย่างของแนวคิดประเทศ หากแนวคิดมีตาราง
ตารางต้องมีอินสแตนซ์ทั้งหมดของแนวคิด
แต่มีรายชื่อทุกประเทศ
ระบบจะแมปคอลัมน์กับแนวคิดประเทศและพร็อพเพอร์ตี้ของแนวคิดตามประเทศนั้น
รหัสของพวกเขา รหัสของคอลัมน์แรก country
ตรงกับแนวคิด
รหัส ซึ่งหมายความว่าคอลัมน์นี้จะมีตัวระบุประเทศที่ไม่ซ้ำกัน
ตามแนวคิดประเทศ คอลัมน์ถัดไปสอดคล้องกับ
พร็อพเพอร์ตี้ name
ของแนวคิดประเทศ ค่า
ในคอลัมน์นี้ตรงกับค่าของพร็อพเพอร์ตี้ name
ข้อมูล CSV ของตารางแนวคิดมีข้อกำหนด 2-3 ข้อดังนี้
- ส่วนหัวคอลัมน์ในบรรทัดแรกของไฟล์ข้อมูลต้อง
ตรงกันทุกประการกับแนวคิด
id
และพร็อพเพอร์ตี้id
ของแนวคิดที่เกี่ยวข้องกับข้อมูล (แม้ว่า คำสั่งซื้ออาจแตกต่างกันไป) - แต่ละแถวต้องมีจำนวนองค์ประกอบเท่ากับจำนวนของ ในแนวคิด (แม้ว่าค่าจะว่างเปล่า)
- แต่ละค่าสำหรับช่อง
id
ของแนวคิด (ในที่นี้คือ รหัสประเทศ) ต้องไม่ซ้ำกันและไม่ว่างเปล่า (ช่องว่างคือช่องที่มี 0 หรือเฉพาะอักขระช่องว่าง) - ค่าสำหรับพร็อพเพอร์ตี้ที่อ้างอิงแนวคิดอื่นๆ ต้องเป็น ว่างเปล่าหรือเป็นค่าที่ถูกต้องของแนวคิดที่อ้างอิง
- ค่าที่มีเครื่องหมายจุลภาค เครื่องหมายคำพูดคู่ หรืออักขระขึ้นบรรทัดใหม่ต้องเป็นค่าต่อไปนี้ ล้อมด้วยเครื่องหมายอัญประกาศคู่
- ต้องยกอักขระเครื่องหมายคำพูดคู่ตามตัวอักษรภายในค่าทันที นำหน้าด้วยเครื่องหมายคำพูดคู่อีกคำหนึ่ง
ปี
แนวคิดสุดท้ายที่เราจำเป็นต้องใช้สำหรับข้อมูลประชากรของประเทศคือแนวคิดในการ
หมายถึงปี แทนที่จะกำหนดแนวคิดใหม่ เราจะใช้
ปี แนวคิดปีจากชุดข้อมูลหนึ่งที่เรานำเข้า:
"http://www.google.com/publicdata/dataset/google/time". วิธีการคือ
เราต้องอ้างอิงว่าเป็น time:year
โดยที่ time
แสดงชุดข้อมูลที่อ้างอิงและ year
ระบุ
แนวคิด
แนวคิด Canonical
time:year
เป็นส่วนหนึ่งของแนวคิด Canonical จำนวนหนึ่ง
กำหนดโดย Google แนวคิด Canonical ให้คำจำกัดความพื้นฐานเกี่ยวกับเวลา
ภูมิศาสตร์ จำนวนตัวเลข หน่วย ฯลฯ
อันที่จริง แนวคิดประเทศที่ระบุไว้ข้างต้นเป็น
แนวคิด Canonical เราสร้างบทความดังกล่าวขึ้นที่นี่เพื่อเป็นข้อมูลประกอบเท่านั้น
เมื่อเป็นไปได้ คุณควรใช้แนวคิด Canonical ในชุดข้อมูลอย่างใดอย่างหนึ่งต่อไปนี้
โดยตรงหรือขยายเวลา (ดูข้อมูลเพิ่มเติมเกี่ยวกับส่วนขยายด้านล่าง) แนวคิด Canonical
เปรียบเทียบข้อมูลของคุณได้กับชุดข้อมูลอื่นๆ และเปิดใช้ฟีเจอร์ให้กับ
ใน Public Data Explorer ตัวอย่างเช่น การทำให้ข้อมูลเคลื่อนไหวเมื่อเวลาผ่านไป
หรือการแสดงข้อมูลทางภูมิศาสตร์บนแผนที่ต้องอาศัย time
และ
geo
แนวคิดตามรูปแบบบัญญัติตามลำดับ
ส่วนแบ่งแรก
ตอนนี้เรามีแนวคิดเกี่ยวกับจำนวนประชากร ประเทศ และปี ก็ถึงเวลา เพื่อสร้างข้อมูลไว้ด้วยกัน!
เราจึงต้องสร้างสไลซ์ที่รวมเข้าด้วยกัน ใน DSPL สไลซ์คือการผสมผสานแนวคิดที่มีข้อมูลอยู่
ลองสร้างตารางที่มีคอลัมน์ที่เหมาะสมดูสิ เนื่องจากชิ้นส่วนจับภาพ ข้อมูลของชุดข้อมูลในแง่ของแนวคิด การดำเนินการนี้จะกลายเป็น เมื่อเราสร้างชุดข้อมูลมากขึ้น
ส่วนแบ่งจะปรากฏในไฟล์ DSPL ภายใต้ <slices>
ซึ่งต้องปรากฏหลังส่วน concepts
<slices> <slice id="countries_slice"> <dimension concept="country"/> <dimension concept="time:year"/> <metric concept="population"/> <table ref="countries_slice_table"/> </slice> </slices>
แต่ละสไลซ์จะมี id
เช่นเดียวกับแนวคิด
(countries_slice
) ที่ระบุสไลซ์ภายในองค์ประกอบ
ชุดข้อมูล
ส่วนหนึ่งๆ จะมีการอ้างอิงแนวคิด 2 ประเภท ได้แก่ มิติข้อมูลและ
เมตริก 3 รายการ ค่าของเมตริกจะแตกต่างกันไปตามค่าของ
ในที่นี้ ค่าของ population
(เมตริก) จะแตกต่างกันตาม
มิติข้อมูล country
และ year
ส่วนต่างๆ จะมีการอ้างอิงไปยังตารางเช่นเดียวกับแนวคิด มีข้อมูลของสไลซ์ ตารางที่อ้างอิงต้องมี 1 คอลัมน์สำหรับ มิติข้อมูลและเมตริกแต่ละรายการของส่วนแบ่ง เช่นเดียวกับแนวคิด ส่วนแบ่ง ระบบจะจับคู่มิติข้อมูลและเมตริกกับคอลัมน์ในตารางที่มีรหัสเดียวกัน
ตารางส่วนแบ่ง
ตารางสำหรับส่วนแบ่งประชากรของเราจะปรากฏใน tables
ของไฟล์ DSPL:
<tables> ... <table id="countries_slice_table"> <column id="country" type="string"/> <column id="year" type="date" format="yyyy"/> <column id="population" type="integer"/> <data> <file format="csv" encoding="utf-8">country_slice.csv</file> </data> </table> ... </tables>
โปรดทราบว่าคอลัมน์ year
มาพร้อมกับ format
ที่ระบุวิธีจัดรูปแบบปี รูปแบบวันที่ที่รองรับ ได้แก่
ตามที่กำหนดโดยรูปแบบวันที่และเวลาของ Joda
ตาราง countries_slice
จะระบุคอลัมน์ของตารางและ
ประเภทของผู้ใช้ และชี้ไปยังไฟล์ CSV ที่มีข้อมูล ไฟล์ CSV
ซึ่งมีลักษณะดังนี้
country, year, population AF, 1960, 9616353 AF, 1961, 9799379 AF, 1962, 9989846 AF, 1963, 10188299 ...
แต่ละแถวของตารางข้อมูลจะมีชุดค่าผสมของมิติข้อมูลที่ไม่ซ้ำกัน
country
และ year
พร้อมด้วยค่าที่เกี่ยวข้อง
เมตริก population
(เช่น ประชากร -
metric - ของอัฟกานิสถานในปี 1960 - มิติข้อมูล)
โปรดทราบว่าค่าในคอลัมน์ country
ตรงกับค่า
ค่า/ตัวระบุของแนวคิด country
ซึ่งก็คือ ISO 3166
รหัสประเทศ 2 ตัวอักษร
ข้อมูล CSV ของส่วนแบ่งต้องเป็นไปตามข้อจำกัดต่อไปนี้
- แต่ละค่าของช่องมิติข้อมูล (เช่น
country
และyear
) ต้องไม่ว่างเปล่า ค่าสำหรับช่องเมตริก (เช่นpopulation
) ว่างเปล่าได้ ค่าว่างจะแสดงเป็น "ไม่" อักขระ - แต่ละค่าของช่องมิติข้อมูลที่อ้างอิงแนวคิดจะต้องมีลักษณะดังนี้
ที่อยู่ในข้อมูลของแนวคิดดังกล่าว เช่น ค่า
AF
ต้องอยู่ในตารางข้อมูลแนวคิดcountry
- ชุดค่าผสมที่ไม่ซ้ำกันแต่ละชุดของค่ามิติข้อมูล เช่น
AF, 2000
, อาจเกิดขึ้นเพียงครั้งเดียว - ข้อมูลควรจัดเรียงตามคอลัมน์มิติข้อมูลที่ไม่ใช่เวลา (ในลำดับใดก็ได้)
และตามด้วยคอลัมน์อื่นๆ หรือไม่ก็ได้ ตัวอย่างเช่น
ในตารางที่มีคอลัมน์
[date, dimension1, dimension2, metric1, metric2]
คุณสามารถจัดเรียงตามdimension1
แล้วdimension2
จากนั้นจ่ายdate
แต่ไม่เพิ่มตามdate
แล้วตามด้วยมิติข้อมูล
สรุป
ณ จุดนี้เรามีข้อมูลเพียงพอที่จะอธิบายประเทศ ข้อมูลประชากร กล่าวโดยสรุปคือ สิ่งที่เราต้องทำคือ
- สร้างส่วนหัว DSPL และคำอธิบายของชุดข้อมูลและ จาก Google Cloud
- สร้างแนวคิดหนึ่งสำหรับประชากรและอีกแนวคิดหนึ่งสำหรับประเทศ โดยมี .csv ซึ่งระบุชื่อประเทศและชื่อของทุกประเทศ
- สร้างข้อมูลส่วนหนึ่งด้วยจำนวนประชากรของประเทศต่างๆ ในช่วงระยะเวลาหนึ่ง อ้างอิงแนวคิดปีที่กำหนดไว้แล้วในชุดข้อมูลเวลาที่นำเข้า จาก Google
ในส่วนที่เหลือของบทแนะนำนี้ เราจะทำให้ชุดข้อมูลมีความสมบูรณ์ยิ่งขึ้นโดย เพิ่มมิติข้อมูลในส่วนอื่นๆ รวมถึงเมตริกอื่นๆ ที่จัดกลุ่มตาม หัวข้อ
การเพิ่มมิติข้อมูล: รัฐในสหรัฐอเมริกา
มาปรับปรุงชุดข้อมูลโดยการเพิ่มข้อมูลประชากรสําหรับรัฐต่างๆ ใน สหรัฐอเมริกา ก่อนอื่นเราต้องกำหนดแนวคิดสำหรับรัฐ นี่ดูดีมากเลย เช่น แนวคิดประเทศที่เรา กำหนดไว้ก่อนหน้านี้
<concept id="state" extends="geo:location"> <info> <name> <value>state</value> </name> <description> <value>US states, identified by their two-letter code.</value> </description> </info> <property concept="country" isParent="true" /> <table ref="states_table"/> </concept>
พร็อพเพอร์ตี้ส่วนขยายและแนวคิด ลูกค้า
แนวคิดของรัฐนำเสนอฟีเจอร์ใหม่หลายรายการของ DSPL
ประการแรก สถานะขยายแนวคิดอื่น
geo:location
(มีคำจำกัดความในชุดข้อมูลทางภูมิศาสตร์ภายนอก
ที่ส่วนต้นของชุดข้อมูล) ในเชิงความหมาย หมายความว่า
state
เป็น geo:location
ประเภทหนึ่ง ผลที่ตามมาคือ
โมเดลจะสืบทอดแอตทริบิวต์และพร็อพเพอร์ตี้ทั้งหมดของ
geo:location
โดยเฉพาะอย่างยิ่ง สถานที่ตั้งเป็นตัวกำหนดที่พักสำหรับ
latitude
และ longitude
โดยการขยายการใช้งาน
คุณสมบัติเหล่านี้จะถูกใช้กับสถานะด้วยเช่นกัน นอกจากนี้ เนื่องจาก
สถานที่รับค่ามาจาก entity:entity
รัฐยังได้รับ
พร็อพเพอร์ตี้หลังทั้งหมด รวมถึง name
description
และ info_url
หมายเหตุ: แนวคิดประเทศที่กําหนดไว้ก่อนหน้านี้
ในทางเทคนิค ก็จะขยายจาก geo:location
ด้วยเช่นกัน
ละเว้นจุดนี้ไปก่อนเพื่อความง่าย เราได้รวม
อย่างไรก็ตาม ในการสืบทอดประเทศ
ไฟล์ XML สุดท้าย
หมายเหตุ: คุณสามารถใช้ extends
สร้างในชุดข้อมูลของคุณเองเพื่อนำข้อมูลที่ชุดข้อมูลอื่นกำหนดมาใช้ใหม่
การใช้ extends
กำหนดให้อินสแตนซ์ทั้งหมดของแนวคิดต้อง
ตัวอย่างที่ถูกต้องของแนวคิดที่คุณจะขยาย ส่วนขยายที่ให้คุณเพิ่มได้
พร็อพเพอร์ตี้และแอตทริบิวต์เพิ่มเติม และจำกัดชุดอินสแตนซ์
เซ็ตย่อยของอินสแตนซ์ของแนวคิดแบบขยาย
นอกจากการสืบทอดค่าแล้ว ทรัพย์สินของรัฐยังแนะนำ
แหล่งอ้างอิงแนวคิด
โดยเฉพาะอย่างยิ่ง แนวคิดรัฐมีพร็อพเพอร์ตี้ชื่อ country
ซึ่งอ้างอิงถึงแนวคิดประเทศที่เราสร้างไว้ข้างต้น ซึ่งทำโดย
โดยใช้แอตทริบิวต์ concept
โปรดทราบว่าพร็อพเพอร์ตี้นี้จะไม่
ระบุรหัสเฉพาะการอ้างอิงแนวคิดเท่านั้น ซึ่งเทียบเท่ากับการสร้างรหัส
ด้วยค่าเดียวกันกับรหัสของแนวคิดที่อ้างอิง (นั่นคือ
country
ในตัวอย่างนี้) ความสัมพันธ์ตามลำดับชั้นระหว่าง
รัฐและเคาน์ตีถูกจับได้โดยการมีแอตทริบิวต์
isParent="true"
ในข้อมูลอ้างอิง โดยทั่วไปแล้ว
มิติข้อมูลที่มีความสัมพันธ์ตามลำดับชั้น เช่น ภูมิศาสตร์ ควรเป็น
ในลักษณะนี้ โดยแนวคิดย่อยจะมีพร็อพเพอร์ตี้ที่
อ้างอิงแนวคิดหลักโดยใช้แอตทริบิวต์ isParent
คำจำกัดความตารางสำหรับรัฐจะมีลักษณะดังนี้
<tables> ... <table id="states_table"> <column id="state" type="string"/> <column id="name" type="string"/> <column id="country" type="string"> <value>US</value> </column> <column id="latitude" type="float"/> <column id="longitude" type="float"/> <data> <file format="csv" encoding="utf-8">states.csv</file> </data> </table> ... </tables>
คอลัมน์ประเทศมีค่าคงที่สำหรับทุกรัฐ ระบุใน
DSPL จะหลีกเลี่ยงการใช้ค่านั้นซ้ำสำหรับทุกสถานะในข้อมูล และโปรดทราบ
เราได้รวมคอลัมน์สำหรับ name
, latitude
และ
longitude
เนื่องจากรัฐได้รับพร็อพเพอร์ตี้เหล่านี้มาจาก
geo:location
ในทางกลับกัน พร็อพเพอร์ตี้ที่รับช่วงมาบางรายการ
(เช่น description
) ไม่มีคอลัมน์ ไม่เป็นไร
หากพร็อพเพอร์ตี้ไม่รวมอยู่ในตารางการกำหนดแนวคิด ค่าของพร็อพเพอร์ตี้จะเป็น
จะถือว่าไม่มีการกำหนดสำหรับทุกอินสแตนซ์ของแนวคิด
ไฟล์ CSV มีลักษณะดังนี้
state, name, latitude, longitude AL, Alabama, 32.318231, -86.902298 AK, Alaska, 63.588753, -154.493062 AR, Arkansas, 35.20105, -91.831833 AZ, Arizona, 34.048928, -111.093731 CA, California, 36.778261, -119.417932 CO, Colorado, 39.550051, -105.782067 CT, Connecticut, 41.603221, -73.087749 ...
เนื่องจากเรามีแนวคิดเกี่ยวกับจำนวนประชากรและปีอยู่แล้ว เราสามารถนำมาใช้ซ้ำได้ เพื่อกำหนดส่วนย่อยใหม่สำหรับประชากรของรัฐ
<slices> <slice id="states_slice"> <dimension concept="state"/> <dimension concept="time:year"/> <metric concept="population"/> <table ref="states_slice_table"/> </slice> </slices>
คำจำกัดความของตารางข้อมูลมีลักษณะดังนี้
<tables> ... <table id="states_slice_table"> <column id="state" type="string"/> <column id="year" type="date" format="yyyy"/> <column id="population" type="integer"/> <file format="csv" encoding="utf-8">state_slice.csv</file> </table> ... </tables>
และไฟล์ CSV จะมีหน้าตาแบบนี้
state, year, population AL, 1960, 9616353 AL, 1961, 9799379 AL, 1962, 9989846 AL, 1963, 10188299
เดี๋ยวนะ ทำไมเราจึงสร้างส่วนใหม่ขึ้นมา แทนที่จะเพิ่มส่วนอื่น มิติข้อมูลก่อนหน้าได้ไหม
ส่วนแบ่งที่มีมิติข้อมูลสำหรับทั้งรัฐและประเทศอาจไม่ถูกต้อง เพราะบางแถวจะเป็นสำหรับข้อมูลประเทศ และบางแถวจะเป็นสำหรับรัฐ ตารางจะมี "หลุม" สำหรับบางมิติข้อมูล ซึ่งก็คือ ไม่อนุญาต (โปรดทราบว่าค่าที่หายไปจะอนุญาตเฉพาะเมตริกและ ไม่ใช่ขนาด)
มิติข้อมูลทำหน้าที่เป็น "คีย์หลัก" สำหรับชิ้นส่วนนั้นๆ ซึ่งหมายความว่า แถวข้อมูลทุกแถวต้องมีค่าสำหรับมิติข้อมูลทั้งหมด และไม่มีแถวข้อมูล 2 แถว สามารถมีค่าที่เหมือนกันทุกประการสำหรับมิติข้อมูลทั้งหมดได้
การเพิ่มเมตริก: การว่างงาน ให้คะแนน
เรามาเพิ่มเมตริกอื่นลงในชุดข้อมูลกัน
<concept id="unemployment_rate" extends="quantity:rate"> <info> <name> <value>Unemployment rate</value> </name> <description> <value>The percent of the labor force that is unemployed.</value> </description> <url> <value>http://www.bls.gov/cps/cps_htgm.htm</value> </url> </info> <type ref="float/> <attribute id="is_percentage"> <type ref="boolean"/> <value>true</value> </attribute> </concept>
ส่วน info
ของเมตริกนี้มีชื่อ คำอธิบาย และ
URL (ลิงก์ไปยังสำนักงานสถิติแรงงานแห่งสหรัฐอเมริกา)
แนวคิดนี้ยังเป็นการขยายแนวคิด quantity:rate
ด้วย
จำนวน
ชุดข้อมูล กำหนดแนวคิดหลักในการแสดงจำนวนตัวเลข ใน
คุณควรสร้างแนวคิดเชิงตัวเลขโดยขยาย
แนวคิดปริมาณที่เหมาะสม ดังนั้นแนวคิด population
ในทางเทคนิคแล้ว ควรจะขยายจาก
quantity:amount
แอตทริบิวต์แนวคิด
แนวคิดนี้ยังแนะนําการสร้างแอตทริบิวต์ด้วย ใน
ตัวอย่างนี้ แอตทริบิวต์ใช้เพื่อบอกว่า unemployment_rate
เป็นเปอร์เซ็นต์ แอตทริบิวต์ is_percentage
รับค่ามาจาก
quantity:rate
ที่มาจากแนวคิดนี้ ช่วงเวลานี้
Public Data Explorer ใช้ข้อมูลเพื่อแสดงสัญลักษณ์เปอร์เซ็นต์เมื่อ
การแสดงข้อมูลเป็นภาพ
แอตทริบิวต์เป็นกลไกทั่วไปในการแนบคู่คีย์/ค่าเข้ากับ
(ซึ่งตรงข้ามกับคุณสมบัติ ซึ่งเชื่อมโยงค่าเพิ่มเติมกับ
อินสแตนซ์ของแนวคิด) เช่นเดียวกับแนวคิดและพร็อพเพอร์ตี้
แอตทริบิวต์มี id
, info
และ
type
ทั้งยังอ้างอิงแนวคิดอื่นๆ ได้เช่นเดียวกับพร็อพเพอร์ตี้
แอตทริบิวต์ไม่ได้มีไว้สำหรับข้อมูลทั่วไปที่กำหนดไว้ล่วงหน้าเท่านั้น เช่น ข้อมูลตัวเลข พร็อพเพอร์ตี้ คุณกำหนดแอตทริบิวต์ของตัวเองให้กับแนวคิดของคุณได้
การเพิ่มข้อมูลอัตราการว่างงานในสหรัฐอเมริกา สถานะ
ตอนนี้เราพร้อมที่จะเพิ่มข้อมูลอัตราการว่างงานในรัฐต่างๆ ของสหรัฐฯ แล้ว เพราะ อัตราการว่างงานเป็นเมตริก และเรามีข้อมูลประชากรในรัฐต่างๆ เราสามารถเพิ่มลงในส่วนที่เราสร้างไว้แล้วสำหรับรัฐและปี ขนาด:
<slices> ... <slice id="states_slice"> <dimension concept="state"/> <dimension concept="time:year"/> <metric concept="population"/> <metric concept="unemployment_rate"/> <table ref="states_slice_table"/> </slice> ... </slices>
... แล้วเพิ่มคอลัมน์อื่นลงในคำจำกัดความของตาราง ดังนี้
<tables> ... <table id="states_slice_table"> <column id="state" type="string"/> <column id="year" type="date" format="yyyy"/> <column id="population" type="integer"/> <column id="unemployment_rate" type="float"/> <data> <file format="csv" encoding="utf-8">state_slice.csv</file> </data> </table> ... </tables>
... และในไฟล์ CSV:
state, year, population, unemployment_rate AL, 1960, 9616353, 5.1 AL, 1961, 9799379, 5.2 AL, 1962, 9989846, 4.8 AL, 1963, 10188299, 6.9
ก่อนหน้านี้เราพูดไว้ว่า มิติข้อมูลต่างๆ จะกลายมาเป็นคีย์หลักสำหรับทุกสไลซ์ สำหรับชิ้นส่วนนั้นๆ นอกจากนี้ ชุดข้อมูลแต่ละชุดมีได้ 1 สไลซ์สำหรับ ที่มีชุดค่าผสมของมิติข้อมูล เมตริกทั้งหมดที่พร้อมใช้งานสําหรับรายการเหล่านี้ ต้องเป็นของส่วนเดียวกัน
มิติข้อมูลเพิ่มเติม: การแจกแจงประชากรตามเพศ
มาเพิ่มคุณค่าให้กับชุดข้อมูลด้วยการแจกแจงประชากรตามเพศสำหรับ ประเทศ ตอนนี้คุณก็เริ่มเข้าใจการฝึกซ้อมแล้ว... ก่อนอื่นเราจะต้อง เพิ่มแนวคิดสำหรับเพศ:
<concept id="gender" extends="entity:entity"> <info> <name> <value>Gender</value> </name> <description> <value>Gender, Male or Female</value> </description> <pluralName> <value>Genders</value> </pluralName> <totalName> <value>Both genders</value> </totalName> </info> <type ref="string"/> <table ref="genders_table"/> </concept>
ส่วนแนวคิดเพศ info
มี
pluralName
ซึ่งระบุข้อความที่จะใช้อ้างถึง
อินสแตนซ์หลายๆ ตัวของแนวคิดเพศ และส่วน info
มี totalName
ซึ่งจะระบุข้อความที่จะใช้เพื่อ
หมายถึงอินสแตนซ์ทั้งหมดของแนวคิดเรื่องเพศทั้งหมด ทั้ง 2 อย่างนี้
Public Data Explorer ใช้เพื่อแสดงข้อมูลที่เกี่ยวข้องกับเพศ
แนวคิด โดยทั่วไปแล้ว คุณควรระบุแนวคิดที่นำไปใช้เป็น
โปรดทราบว่าแนวคิดเรื่องเพศมาจาก
entity:entity
ซึ่งเป็นแนวทางปฏิบัติที่ดีสำหรับแนวคิด
ที่ใช้เป็นมิติข้อมูล เนื่องจากให้คุณเพิ่มชื่อที่กำหนดเองได้
URL และสีสำหรับอินสแตนซ์แนวคิดต่างๆ
แนวคิดเพศหมายถึงตาราง genders_table
ซึ่ง
มีค่าที่เป็นไปได้สำหรับเพศและชื่อที่แสดง
(ละเว้นที่นี่)
เราต้องสร้างส่วนใหม่เพื่อเพิ่มประชากรตามเพศลงในชุดข้อมูล (โปรดจำไว้ว่า: ชุดค่าผสมของมิติข้อมูลแต่ละชุดที่มีอยู่จะสอดคล้องกับส่วนแบ่งใน ชุดข้อมูลนั้น)
<slice id="countries_gender_slice"> <dimension concept="country"/> <dimension concept="gender"/> <dimension concept="time:year"/> <metric concept="population"/> <table ref="countries_gender_slice_table"/> </slice>
คำจำกัดความของตารางสำหรับสไลซ์จะมีลักษณะดังนี้
<table id="countries_gender_slice_table"> <column id="country" type="string"/> <column id="gender" type="string"/> <column id="year" type="date" format="yyyy"/> <column id="population" type="integer"/> <data> <file format="csv" encoding="utf-8">gender_country_slice.csv</file> </data> </table>
ไฟล์ CSV สำหรับตารางจะมีลักษณะดังนี้
country, gender, year, population AF, M, 1960, 4808176 AF, F, 1960, 4808177 AF, M, 1961, 4899689 AF, F, 1961, 4899690...
เมื่อเปรียบเทียบกับประเทศ ประชากร และผู้ว่างงานก่อนหน้านี้ วิดีโอนี้มีมิติข้อมูลเพิ่มเติม แต่ละค่าของเมตริกประชากร ไม่ได้สอดคล้องกับประเทศและปีหนึ่งๆ เท่านั้น แต่ยังรวมถึง เพศที่เฉพาะเจาะจง
โปรดทราบว่าเราได้สร้าง ชุดข้อมูล ไม่ใช่ทั้งหมด ใช้ได้กับมิติข้อมูลทั้งหมด ได้แก่ ประชากร สำหรับประเทศและรัฐในสหรัฐอเมริกา เป็นรายปี ในกรณีที่คนว่างงาน ราคานี้มีให้บริการเฉพาะในประเทศต่างๆ ดูรายละเอียดตามเพศได้ สำหรับประชากรตามประเทศเท่านั้น ไม่มีให้บริการสำหรับอัตราการว่างงาน ไม่ใช่สำหรับมิติข้อมูลสถานะ ข้อมูลนี้ยังอาจมีข้อมูลน้อยมากด้วย โดยเมตริกบางรายการไม่มีค่าสำหรับมิติข้อมูลบางค่า แต่ไม่ได้แสดงอยู่ใน DSPL
หัวข้อ
ฟีเจอร์สุดท้ายของ DSPL ที่เราจะใช้ในชุดข้อมูลคือหัวข้อ หัวข้อใช้ในการจำแนกแนวคิดตามลำดับชั้น และใช้โดย แอปพลิเคชันที่ช่วยผู้ใช้ไปยังข้อมูลของคุณ
ในไฟล์ DSPL หัวข้อจะปรากฏก่อนแนวคิด ตัวอย่าง ลำดับชั้นของหัวข้อ:
<dspl ... > ... <topics> <topic id="geography"> <info> <name> <value>Geography</value> </name> </info> </topic> <topic id="social_indicators"> <info> <name> <value>Social indicators</value> </name> </info> </topic> <topic id="population_indicators"> <info> <name> <value>Population indicators</value> </name> </info> </topic> <topic id="poverty_and_income"> <info> <name> <value>Poverty & income</value> </name> </info> </topic> <topic id="health"> <info> <name> <value>Health</value> </name> </info> </topic> </topics>
คุณจะฝังหัวข้อได้ลึกเท่าที่จำเป็น
ในการใช้หัวข้อ คุณเพียงแค่ต้องอ้างอิงจากแนวคิด ดังนี้
<concept id="population"> <info> <name> <value>Population</value> </name> <description> <value>Size of the resident population.</value> </description> </info> <topic ref="population_indicators"/> <type ref="integer"/> </concept>
แนวคิดอาจอ้างอิงมากกว่า 1 หัวข้อ
การส่งชุดข้อมูล
ตอนนี้คุณสร้างชุดข้อมูลแล้ว ขั้นตอนถัดไปคือการซิปและ อัปโหลดไฟล์ ZIP ลงใน เครื่องมือ Google Public Data Explorer หากพบปัญหา ให้ตรวจสอบ คำถามที่พบบ่อย ซึ่งจะรวมการสนทนา ของปัญหาในการอัปโหลดที่พบบ่อยที่สุด
สำหรับการอ้างอิง คุณยังดาวน์โหลดไฟล์ XML ที่สมบูรณ์และชุดชุดข้อมูลที่สมบูรณ์ได้ด้วย ที่เกี่ยวข้องกับบทแนะนำนี้
ขั้นตอนถัดไป
ขอแสดงความยินดีกับการสร้างชุดข้อมูล DSPL ชุดแรก ตอนนี้คุณได้ ข้อมูลเบื้องต้น เราขอแนะนำให้อ่านคู่มือนักพัฒนาซอฟต์แวร์ ซึ่ง นอกเหนือจากเอกสาร "ขั้นสูง" ฟีเจอร์ DSPL เช่น การสนับสนุนหลายภาษาและแนวคิดที่สามารถจัดทำแผนที่ได้
คุณอาจต้องดูชุดข้อมูลตัวอย่างเพิ่มเติม