บทแนะนำ DSPL

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 หรือเฉพาะอักขระช่องว่าง)
  • ค่าสำหรับพร็อพเพอร์ตี้ที่อ้างอิงแนวคิดอื่นๆ ต้องเป็น ว่างเปล่าหรือเป็นค่าที่ถูกต้องของแนวคิดที่อ้างอิง
  • ค่าที่มีเครื่องหมายจุลภาค เครื่องหมายคำพูดคู่ หรืออักขระขึ้นบรรทัดใหม่ต้องเป็นค่าต่อไปนี้ ล้อมด้วยเครื่องหมายอัญประกาศคู่
  • ต้องยกอักขระเครื่องหมายคำพูดคู่ตามตัวอักษรภายในค่าทันที นำหน้าด้วยเครื่องหมายคำพูดคู่อีกคำหนึ่ง

ปี

แนวคิดสุดท้ายที่เราจำเป็นต้องใช้สำหรับข้อมูลประชากรของประเทศคือแนวคิดในการ หมายถึงปี แทนที่จะกำหนดแนวคิดใหม่ เราจะใช้ ปี แนวคิดปีจากชุดข้อมูลหนึ่งที่เรานำเข้า: &quot;http://www.google.com/publicdata/dataset/google/time&quot;. วิธีการคือ เราต้องอ้างอิงว่าเป็น 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 เช่น การสนับสนุนหลายภาษาและแนวคิดที่สามารถจัดทำแผนที่ได้

คุณอาจต้องดูชุดข้อมูลตัวอย่างเพิ่มเติม