Topik temu duga representatif

Temu Bual Kejuruteraan Data: Bagaimanakah BI, buku nota, dan API berkongsi lapisan semantik yang ditadbir?

DataSukar
Pasukan Editorial Offer.ccDiterbitkan Dikemas kini

Soalan

Definisi metrik telah ditadbir. Bagaimanakah anda akan mengompilasi dan menerbitkannya untuk BI, buku nota, dan API sambil mengendalikan pengesahan parameter, kebenaran (authorization), caching, keserasian, dan pengunduran (rollback)?

Gesaan dan skop

Sebuah syarikat mendapati bahawa “active customer,” “revenue,” dan “retention” menggunakan SQL yang berbeza dalam papan pemuka yang berbeza. Reka bentuk lapisan semantik yang dikongsi oleh BI, buku nota, API dan ejen automasi masa hadapan. Ia mesti menyokong dimensi, butiran masa (time grains), penapis, kebenaran, versi sejarah dan data hampir masa nyata. Terangkan cara mengelak daripada membina satu lagi platform pelaporan yang tidak boleh diuji.

Perkara yang diuji oleh penemu duga

Asingkan entiti, dimensi, ukuran (measures), pengagregatan, dan semantik metrik sebelum membincangkan alatan. Kemudian kendalikan butiran cantuman (join grain), pengiraan pendua, zon masa, dan data lewat. Layan metrik sebagai kontrak produk berversi dengan definisi, pemilik, sumber, butiran yang disokong, keadaan kualiti, dan keserasian—bukan sebagai direktori keratan SQL.

Penjelasan sebelum menjawab

  1. Apakah butiran fakta (fact grain)? Mencampurkan pesanan, barisan pesanan, dan peristiwa boleh menggandakan kiraan hasil.
  2. Apakah dimensi dan butiran masa yang diperlukan? Bukan setiap gabungan adalah selamat; terbitkan matriks sokongan.
  3. Apakah sasaran kesegaran dan ketekalan? Penstriman, kelompok (batch) harian, dan data pengisian semula (backfill) mempunyai keadaan keterlihatan yang berbeza.
  4. Siapakah yang boleh menerbitkan definisi dan membaca dimensi sensitif? Kebenaran metrik tidak boleh memintas keselamatan peringkat baris atau lajur.
  5. Adakah definisi sejarah mesti boleh dihasilkan semula, atau adakah hanya definisi semasa diperlukan? Ini menentukan penghalaan versi, syot kilat (snapshots), dan kos pengiraan semula.

Reka bentuk dan penerbitan yang disyorkan

Cipta entiti definisi metrik yang tidak boleh diubah (immutable): nama, penerangan, ungkapan ukuran, pengagregatan lalai, dimensi, semantik masa, penapis, sumber, pemilik, versi, keadaan, dan SLO kualiti. Sesuatu pertanyaan merujuk kepada ID metrik, dimensi, dan tetingkap masa; pengkompil menjana SQL atau menghalakan ke jadual pra-agregat.

Sebelum kompilasi, semak bahawa laluan cantuman (join paths) adalah unik, pengagregatan sepadan dengan butiran, penapis boleh ditolak ke bawah (push down), dan pengguna mempunyai akses lajur. Untuk kiraan berbeza (distinct counts), nisbah, dan metrik tetingkap, rekod penyebut, kunci penyahduplikasian (deduplication key), dan dasar null daripada membiarkan setiap alat meneka.

yaml
metric: active_customers
version: 3
owner: growth-data
source: mart_customer_daily
measure: count_distinct(customer_id)
dimensions: [plan, region]
time_grain: [day, week, month]
freshness_slo: 2h
status: published

Keluarkan dalam dua trek: bandingkan versi baharu dengan yang lama dalam pertanyaan bayangan (shadow queries), kemudian dedahkannya kepada set ruang kerja yang kecil; sekat promosi apabila perbezaan melebihi ambang. Kunci cache mesti mengandungi versi metrik, dimensi, penapis, dan tanda air data (watermark), jika tidak pertukaran versi boleh membaca hasil lama. Tetapkan belanjawan, had masa tamat (timeouts), dan sandaran pra-agregat untuk pertanyaan yang mahal.

Alternatif dan pertukaran (trade-offs)

Membenamkan logik dalam setiap alat BI membolehkan penghantaran pantas tetapi memecahkan definisi. Satu set data fizikal yang dikurasi adalah mudah tetapi tidak dapat menyatakan setiap butiran atau kebenaran. Lapisan semantik berpusat memberikan ketekalan dan API yang boleh diguna semula dengan kos pengkompil, tadbir urus versi, pemetaan kebenaran, dan penyahpepijatan. Pasukan kecil boleh bermula dengan beberapa metrik teras dan satu pengguna sebelum membuka akses pelbagai alat.

Mod kegagalan, sempadan, dan contoh lawan

  • Mendefinisikan hasil sebagai sum(amount) sambil mengabaikan bayaran balik, cukai, mata wang, dan cantuman pesanan pendua.
  • Membiarkan metrik membaca jadual mentah sewenang-wenangnya, memintas pintu kualiti dan kebenaran lajur.
  • Mengubah maksud metrik tanpa versi baharu, menukar papan pemuka sejarah secara senyap.
  • Menganggap kadar hit cache sebagai ketepatan sambil mengabaikan tanda air (watermarks), peristiwa lewat, dan keterlihatan pengisian semula (backfill).
  • Menjana pertanyaan hasil darab Cartesian untuk setiap gabungan dimensi; terbitkan gabungan yang tidak disokong dan tawarkan agregat yang lebih selamat sebagai ganti.

Senarai semak ujian dan pengesahan

Simpan pertanyaan emas (golden query) dan set data tetap yang kecil untuk setiap metrik. Uji pengagregatan, penyebut, zon masa, null, cantuman pendua, peristiwa lewat, dan perbezaan versi. Tambah ujian kontrak skema, kebenaran, pengkompil, dan cache; bandingkan hasil dan kos dengan sampel pengeluaran. Pintu keluaran harus menyemak kesempurnaan definisi, kesegaran sumber, SLO kualiti, pemetaan kebenaran, dan perbezaan lama lawan baharu.

Soalan susulan

Bagaimanakah anda mengendalikan perubahan definisi metrik yang merosakkan keserasian (breaking change)?

Terbitkan versi baharu, kekalkan penghalaan untuk versi lama, tandakan tarikh penamatan (deprecation date), maklumkan pihak bergantung, dan alih keluar hanya selepas penghijrahan. Laporan sejarah mesti memilih versi lama untuk pengiraan semula yang boleh dihasilkan semula; jangan sekali-kali menggunakan semula nombor versi.

Bagaimanakah lapisan ini boleh menyediakan data hampir masa nyata dan data kelompok (batch)?

Jadikan sumber dan tanda air (watermark) sebahagian daripada definisi, dan kembalikan keadaan kesegaran serta kesempurnaan dengan setiap hasil. Sumber penstriman mungkin memberikan hasil sementara yang kemudiannya diselaraskan oleh proses kelompok; kedua-dua laluan mesti berkongsi semantik dan peraturan penyahduplikasian.

Bagaimanakah anda menghalang ejen bahasa semula jadi daripada menyalahgunakan metrik?

Dedahkan hanya metrik yang diterbitkan, dimensi yang disokong, dan skop yang dibenarkan, serta kembalikan pelan pertanyaan yang boleh diterangkan dan versi definisi. Tolak permintaan yang tidak dapat membuktikan butiran, kebenaran, atau kesegaran; jangan biarkan ejen bebas mereka bentuk SQL jadual mentah.

Sumber awam

Soalan berkaitan