dbt seeds

dbt ระดับกลาง

Mike Metzger

Data Engineer

dbt seeds คืออะไร?

  • ไฟล์ CSV สำหรับโหลดเข้า data warehouse
  • โดยทั่วไปเป็นข้อมูลที่เปลี่ยนแปลงไม่บ่อย
    • รายชื่อประเทศ
    • รายชื่อรหัสไปรษณีย์
  • ไม่ เหมาะสำหรับข้อมูลดิบ

Seeds

1 ภาพโดย Maddi Bazzocco จาก Unsplash
dbt ระดับกลาง

ทำไมต้องใช้?

  • จัดการได้ง่าย
  • ใช้งานได้หลากหลายสถานการณ์
  • ควบคุมด้วย source control ได้
dbt ระดับกลาง

กำหนด seeds อย่างไร?

  • เพิ่มไฟล์ CSV ลงในไดเรกทอรี seeds
  • ตรวจสอบว่า header อยู่ในแถวแรก
  • นำเข้าด้วยคำสั่ง dbt seed
zipcode,place,state
99553,Akutan,Alaska
99571,Cold Bay,Alaska
99583,False Pass,Alaska

bash> dbt seed
1 Postal codes provided via https://github.com/zauberware/postal-codes-json-xml-csv
dbt ระดับกลาง

การกำหนดค่าเพิ่มเติม

  • มีตัวเลือกหลายรายการ
    • ใช้ schema ใด?
    • ใช้ database ใด?
    • การ quote คอลัมน์
    • ชนิดข้อมูลของคอลัมน์
  • ใช้กับทั้งโปรเจกต์หรือแต่ละ seed ก็ได้
  • เพิ่มใน dbt_project.yml หรือ seeds/properties.yml
dbt ระดับกลาง

การกำหนดชนิดข้อมูล

  • ชนิดข้อมูลที่รองรับขึ้นอยู่กับ data warehouse
  • ชนิดทั่วไปที่ใช้งานได้ เช่น
    • Integer
    • Varchar
    • ฯลฯ
  • หากไม่ระบุชนิด ระบบจะอนุมานจากข้อมูลเอง
version: 2

seeds:
  - name: zipcodes
    config:
      column_types:
        zipcode: varchar(5)
dbt ระดับกลาง

การทดสอบ

  • รองรับการทดสอบ
  • เช่นเดียวกับ models และ sources
version: 2

seeds:
  - name: zipcodes
    config:
      column_types:
        zipcode: varchar(5)
    columns:
      - name: zipcode
        tests:
          - unique
dbt ระดับกลาง

การเข้าถึง seeds

  • เข้าถึงได้ผ่านคำสั่ง {{ ref() }}
  • ทำงานเหมือน model หลังจากนำเข้าครั้งแรก
select * from
  {{ ref('zipcodes') }}
dbt ระดับกลาง

มาฝึกกันเถอะ!

dbt ระดับกลาง

Preparing Video For Download...