Mengimpor metadata dari Snowflake Horizon

Hilangkan silo data dan hindari beralih antar-alat dengan menggunakan konektor Knowledge Catalog (sebelumnya Dataplex Universal Catalog) untuk mengimpor metadata dari Snowflake Horizon langsung ke Google Cloud.

Konektor ini mendukung instance Snowflake Horizon yang dihosting di Google Cloud, Microsoft Azure, atau Amazon Web Services (AWS).

Tabel berikut mencantumkan metadata yang diambil oleh konektor Snowflake Horizon:

Kategori Metadata yang diambil
Teknis
  • Metastore (akun Snowflake)
  • Katalog (database)
  • Skema
  • Tabel (termasuk tabel sementara, eksternal, dinamis, interaktif, hybrid, dan Apache Iceberg) dan kolom
  • Tampilan (standar, terwujud, dan aman)
  • Stage (internal dan eksternal), diimpor sebagai fileset
  • Fungsi yang ditentukan pengguna (UDF) dan prosedur tersimpan
Operasional
  • Metrik penggunaan (tampilan, pembacaan, dan penulisan selama 30 dan 90 hari; pengguna yang sering dan tabel yang sering digabungkan selama 30 hari)
  • Kunci utama dan kunci asing
Bisnis
  • Tag (tag objek, kolom, dan anggota tampilan semantik)
  • Kualitas data (ekspektasi fungsi metrik data, deteksi anomali, dan hasil pemantauan kualitas data otomatis)
  • Pembuatan profil data (pengukuran fungsi metrik data dan hasil klasifikasi data)
  • Gabungan dan hubungan (disimpulkan dari histori kueri, dideklarasikan dalam tampilan semantik, dan dependensi tampilan ke tabel)
  • Pemilik (peran pemilik), waktu pembuatan, dan waktu terakhir diubah
Semantik
  • Tampilan semantik (tabel logis, dimensi, fakta, metrik, hubungan, sinonim, nilai sampel, dan petunjuk kustom)
  • Pemilik tampilan semantik
  • Penggunaan tampilan semantik (tampilan dan pembacaan selama 30 dan 90 hari; pengguna yang sering menggunakan dan tabel yang sering digabungkan selama 30 hari)

Batasan

Konektor Snowflake Horizon memiliki batasan berikut:

  • Silsilah tidak didukung.
  • Konektor mengimpor metadata untuk tabel Iceberg Anda, tetapi tidak otomatis menautkan metadata ini ke tabel fisik yang mendasarinya di Iceberg REST Catalog (IRC) Anda.
  • Tag, hasil pembuatan profil dan kualitas data, hasil klasifikasi, gabungan histori kueri, dan insight penggunaan yang membaca ACCESS_HISTORY (pengguna yang sering dan tabel yang sering digabungkan) memerlukan Snowflake Enterprise Edition atau yang lebih tinggi.

Sebelum memulai

Sebelum dapat mengimpor metadata dari Snowflake Horizon, selesaikan tugas-tugas berikut:

  1. Berikan peran dan izin yang diperlukan.
  2. Aktifkan Dataplex API dan BigQuery Data Transfer Service API.
  3. Memenuhi prasyarat Snowflake Horizon.
  4. Memenuhi prasyarat jaringan.

Peran dan izin IAM

Untuk membuat dan mengelola tugas konektor Knowledge Catalog, Anda memerlukan peran Identity and Access Management (IAM) yang memberikan izin untuk Knowledge Catalog dan BigQuery Data Transfer Service.

Untuk mendapatkan izin yang diperlukan untuk mengonfigurasi konektor Snowflake Horizon, minta administrator untuk memberi Anda peran IAM berikut:

Anda juga harus memberikan kedua peran berikut kepada agen layanan BigQuery Data Transfer Service (service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com):

  • Dataplex Entry Group Importer (roles/dataplex.entryGroupImporter), di grup entri tujuan atau di project yang memuatnya. Peran ini memungkinkan agen layanan mengimpor metadata ke dalam grup entri (dataplex.entryGroups.import).
  • Dataplex Entry and EntryLink Owner (roles/dataplex.entryOwner), di project yang berisi grup entri tujuan. Peran ini memungkinkan agen layanan mengimpor metadata penggunaan, bisnis, dan kualitas data serta link entri. Peran ini mencakup izin berikut:

    • dataplex.entryGroups.useDataProfileAspect
    • dataplex.entryGroups.useDataQualityScorecardAspect
    • dataplex.entryGroups.useManagedConnectorTypes
    • dataplex.entryGroups.useReferenceEntryLink
    • dataplex.entryGroups.useSchemaAspect
    • dataplex.entryGroups.useSchemaJoinAspect
    • dataplex.entryGroups.useSchemaJoinEntryLink
    • dataplex.entryGroups.useUsageAspect
    • dataplex.entryLinks.reference

    Berikan peran ini pada project, bukan hanya pada grup entri, karena impor memeriksa izin dataplex.entryLinks.reference pada project. Jika agen layanan tidak memiliki izin ini pada project, operasi transfer akan gagal dengan error seperti Permission 'dataplex.entryLinks.reference' denied, dan tidak ada metadata yang diimpor.

Alih-alih memberikan kedua peran ini, Anda dapat memberikan peran Dataplex Entry Group Owner (roles/dataplex.entryGroupOwner) pada project yang berisi grup entri tujuan. Peran ini mencakup izin kedua peran, dan juga memungkinkan agen layanan membuat, menghapus, dan mengelola akses ke semua grup entri dalam project.

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

Mengaktifkan API

Aktifkan Dataplex API dan BigQuery Data Transfer Service API.

Aktifkan API

Prasyarat Snowflake Horizon

Jika Anda juga ingin menjalankan kueri SQL atau tugas Spark terhadap katalog Snowflake jarak jauh, lihat Menyiapkan koneksi lintas cloud untuk Snowflake Horizon Catalog.

Konektor login ke Snowflake sebagai pengguna Snowflake dengan autentikasi pasangan kunci dan membaca metadata dari skema SNOWFLAKE.ACCOUNT_USAGE. Autentikasi sandi tidak didukung. Administrator Snowflake, seperti pengguna dengan peran ACCOUNTADMIN, harus menyelesaikan langkah-langkah berikut:

  1. Buat peran untuk konektor dan beri peran tersebut akses ke ACCOUNT_USAGE dan ke warehouse yang menjalankan kueri metadata:

    CREATE ROLE IF NOT EXISTS DATAPLEX_CATALOG_READER;
    GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE
      TO ROLE DATAPLEX_CATALOG_READER;
    GRANT USAGE ON WAREHOUSE WAREHOUSE_NAME
      TO ROLE DATAPLEX_CATALOG_READER;
    

    Ganti WAREHOUSE_NAME dengan nama warehouse Snowflake yang menjalankan kueri metadata.

  2. Buat pengguna layanan untuk konektor, atau gunakan pengguna yang ada, dan berikan peran:

    CREATE USER IF NOT EXISTS USERNAME
      TYPE = SERVICE
      DEFAULT_ROLE = DATAPLEX_CATALOG_READER
      DEFAULT_WAREHOUSE = WAREHOUSE_NAME;
    GRANT ROLE DATAPLEX_CATALOG_READER TO USER USERNAME;
    

    Ganti USERNAME dengan nama pengguna Snowflake untuk konektor.

  3. Buat pasangan kunci RSA dengan kunci pribadi dalam format PKCS#8:

    openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
    openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
    

    Untuk mengenkripsi kunci pribadi, ganti -nocrypt dengan -v2 aes-256-cbc dan berikan frasa sandi saat Anda mengonfigurasi konektor. Jaga agar file kunci pribadi (rsa_key.p8) tetap aman karena Anda akan memberikannya saat mengonfigurasi konektor.

  4. Tetapkan kunci publik ke pengguna Snowflake:

    ALTER USER USERNAME SET RSA_PUBLIC_KEY='PUBLIC_KEY';
    

    Ganti PUBLIC_KEY dengan konten rsa_key.pub, tidak termasuk baris -----BEGIN PUBLIC KEY----- dan -----END PUBLIC KEY-----.

  5. Opsional: Untuk mengimpor metadata tambahan, berikan hak istimewa berikut kepada peran konektor:

    • Profil data dan hasil kualitas data: Berikan peran aplikasi SNOWFLAKE.DATA_QUALITY_MONITORING_VIEWER:

      GRANT APPLICATION ROLE SNOWFLAKE.DATA_QUALITY_MONITORING_VIEWER
        TO ROLE DATAPLEX_CATALOG_READER;
      

      Hasil kualitas data hanya diimpor untuk pemeriksaan yang dapat dilihat oleh peran, yang memerlukan USAGE pada database dan skema, SELECT pada tabel, dan USAGE pada fungsi metrik data kustom.

    • Kunci utama dan kunci asing: Berikan USAGE pada database dan skema, serta SELECT atau REFERENCES pada tabel.

    • Nilai sampel dan petunjuk kustom tampilan semantik: Berikan REFERENCES pada tampilan semantik.

Untuk menemukan ID akun yang Anda masukkan saat mengonfigurasi konektor, jalankan kueri berikut di Snowflake:

SELECT CURRENT_ORGANIZATION_NAME() || '-' || CURRENT_ACCOUNT_NAME();

Prasyarat jaringan

Agar BigQuery Data Transfer Service dapat terhubung dengan aman ke database eksternal atau sumber data cloud pihak ketiga dengan alamat IP pribadi di dalam jaringan pribadi, konfigurasikan lampiran jaringan melalui Private Service Connect.

Jika Anda terhubung ke lingkungan lokal atau instance yang dihosting di cloud menggunakan alamat IP publik, lampiran jaringan tidak diperlukan.

Mengonfigurasi konektor Snowflake Horizon

Konfigurasikan konektor Snowflake Horizon menggunakan konsolGoogle Cloud atau REST API.

Konsol

  1. Di konsol Google Cloud , buka halaman Knowledge Catalog.

    Buka Knowledge Catalog

  2. Di menu navigasi, di bagian Manage, klik Connectors, lalu klik Add connection.

  3. Dalam daftar Connectors, pilih kartu Snowflake Horizon.

  4. Di bagian Data source details, berikan detail koneksi untuk akun Snowflake Anda:

    • Untuk Network attachment, pilih lampiran jaringan yang ada jika diperlukan, atau buat lampiran jaringan baru.
    • Untuk Account Identifier, masukkan ID akun Snowflake Anda tanpa .snowflakecomputing.com (misalnya, myorg-myaccount). Anda juga dapat memasukkan pencari lokasi akun, seperti xy12345.us-east-2.aws.
    • Untuk Username, masukkan pengguna Snowflake yang Anda konfigurasi untuk autentikasi pasangan kunci.
    • Untuk Private Key, masukkan kunci pribadi PKCS#8 pengguna, seperti konten file rsa_key.p8.
    • Opsional: Untuk Private Key Passphrase, jika kunci pribadi dienkripsi, masukkan frasa sandinya.
    • Opsional: Untuk Warehouse, masukkan warehouse yang menjalankan kueri metadata. Jika Anda tidak menentukan warehouse, konektor akan menggunakan warehouse default pengguna.
    • Opsional: Untuk Role, masukkan peran yang digunakan konektor, seperti DATAPLEX_CATALOG_READER. Jika Anda tidak menentukan peran, konektor akan menggunakan peran default pengguna.
    • Untuk Snowflake objects to transfer, klik Browse untuk memilih database, skema, atau objek individual (tabel, tampilan, tampilan semantik, stage, fungsi, dan prosedur) yang akan diimpor. Memilih database atau skema akan mengimpor semua objek di dalamnya. Fungsi dan prosedur dicantumkan dengan jenis argumennya, seperti CALC(NUMBER, VARCHAR).

      Anda juga dapat memasukkan objek secara manual dalam format TYPE:ACCOUNT/DATABASE[/SCHEMA[/OBJECT]], dengan TYPE adalah CATALOG (atau DATABASE), SCHEMA, TABLE, VIEW, SEMANTIC-MODEL, FILESET, FUNCTION, atau PROCEDURE (misalnya, SCHEMA:myorg-myaccount/SALES/PUBLIC). Masukkan ACCOUNT dalam format ORG_NAME-ACCOUNT_NAME huruf kecil yang ditampilkan di Browse. Nama database, skema, dan objek peka huruf besar/kecil. Pola nama tidak didukung.

  5. Di bagian Destination settings:

    • Klik Browse dan pilih grup entri Knowledge Catalog yang ada untuk menyimpan metadata yang diimpor, atau klik Create new entry group.
    • Pilih apakah akan menetapkan izin pada grup entri sekarang atau nanti. Agar pengguna dapat melihat metadata yang diimpor, tetapkan izin pada grup entri. Jika Anda tidak memberikan peran Dataplex Entry Group Importer (roles/dataplex.entryGroupImporter) atau izin dataplex.entryGroups.import kepada agen layanan BigQuery Data Transfer Service di level project, berikan peran tersebut pada grup entri ini. Anda tetap harus memberikan peran Dataplex Entry and EntryLink Owner (roles/dataplex.entryOwner) pada project karena izin dataplex.entryLinks.reference diperiksa di level project. Untuk mengetahui informasi selengkapnya, lihat Peran dan izin IAM.
  6. Di bagian Transfer config name, untuk Nama tampilan, masukkan nama untuk tugas impor metadata.

  7. Di bagian Schedule options, konfigurasikan frekuensi untuk tugas impor metadata. Jika Anda memilih On-demand, tugas hanya akan berjalan saat Anda memicunya secara manual.

  8. Opsional: Di bagian Notification options, konfigurasikan notifikasi email atau Pub/Sub untuk kegagalan tugas.

  9. Opsional: Di bagian Advanced options, konfigurasikan setelan enkripsi. Jika Anda memilih kunci enkripsi yang dikelola pelanggan (CMEK), kunci tersebut akan mengenkripsi semua data sementara yang di-stage sebelum memulai tugas impor metadata Knowledge Catalog. Kunci tidak mengenkripsi metadata di grup entri Knowledge Catalog tujuan.

  10. Klik Simpan.

REST

Gunakan metode projects.locations.transferConfigs.create. Di resource TransferConfig, konfigurasi kolom berikut:

  • Tetapkan kolom dataSourceId ke "snowflake_horizon".
  • Di kolom metadataDestination, isi kolom dataplexConfiguration.entryGroup dengan jalur resource grup entri Knowledge Catalog target: projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID.
  • Di kolom params, tetapkan parameter berikut:
    • connector.accountIdentifier (wajib): ID akun Snowflake Anda tanpa .snowflakecomputing.com (misalnya, myorg-myaccount) atau pencari lokasi akun (seperti xy12345.us-east-2.aws).
    • connector.authentication.username (wajib): pengguna Snowflake.
    • connector.authentication.privateKey (wajib): kunci pribadi pengguna dalam format PEM PKCS#8.
    • connector.authentication.privateKeyPassphrase (opsional): frasa sandi kunci pribadi, jika kunci dienkripsi.
    • connector.warehouse (opsional): warehouse yang menjalankan kueri metadata. Jika Anda menghapus parameter ini, konektor akan menggunakan warehouse default pengguna.
    • connector.role (opsional): peran yang digunakan konektor. Jika Anda menghapus parameter ini, konektor akan menggunakan peran default pengguna.
    • connector.networkAttachment (opsional): lampiran jaringan dalam format projects/PROJECT_ID/regions/REGION/networkAttachments/NETWORK_ATTACHMENT_ID.
    • assets (wajib): daftar objek Snowflake yang akan diimpor dalam format TYPE:ACCOUNT/DATABASE[/SCHEMA[/OBJECT]], seperti ["SCHEMA:myorg-myaccount/SALES/PUBLIC"].
  • Opsional: Untuk menyimpan kunci pribadi di luar konfigurasi transfer, simpan di Secret Manager:
    1. Tetapkan connector.authentication.privateKey (dan connector.authentication.privateKeyPassphrase, jika Anda menggunakannya) ke nama resource versi secret dalam format projects/SECRET_PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID, dan tambahkan nama parameter tersebut ke kolom paramConfig.secretManagerManagedParams.
    2. Berikan peran Secret Manager Secret Accessor (roles/secretmanager.secretAccessor) pada setiap secret kepada agen layanan BigQuery Data Transfer Service dari project yang berisi konfigurasi transfer (service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com). Secret dapat berada di project yang berbeda. Jika agen layanan tidak dapat membaca secret, operasi akan gagal sebelum dimulai dengan error seperti Failed to retrieve secret ... Permission 'secretmanager.versions.access' denied. BigQuery Data Transfer Service membaca secret di awal setiap operasi, jadi jika Anda menetapkan VERSION_ID ke latest, kunci yang dirotasi akan digunakan mulai dari operasi berikutnya.

Contoh berikut menunjukkan isi permintaan TransferConfig:

{
  "displayName": "snowflake-metadata-import",
  "dataSourceId": "snowflake_horizon",
  "schedule": "every 24 hours",
  "params": {
    "connector.accountIdentifier": "myorg-myaccount",
    "connector.authentication.username": "USERNAME",
    "connector.authentication.privateKey": "PRIVATE_KEY",
    "connector.warehouse": "WAREHOUSE_NAME",
    "connector.role": "DATAPLEX_CATALOG_READER",
    "assets": [
      "SCHEMA:myorg-myaccount/SALES/PUBLIC"
    ]
  },
  "metadataDestination": {
    "dataplexConfiguration": {
      "entryGroup": "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID"
    }
  }
}

Tugas berjalan secara otomatis berdasarkan jadwal Anda, atau Anda dapat memicunya secara manual.

Memantau tugas konektor Snowflake Horizon

Pantau tugas konektor Snowflake Horizon menggunakan konsolGoogle Cloud atau REST API.

Konsol

  1. Di konsol Google Cloud , di halaman Konektor, klik nama tampilan tugas transfer Snowflake Horizon.
  2. Di tab Run history, klik View details untuk melihat log.
  3. Untuk melihat entri yang dibuat, klik tab Details, lalu klik link grup entri Metadata destination.

REST

  • Untuk mencantumkan operasi konfigurasi transfer dan melihat statusnya, gunakan metode projects.locations.transferConfigs.runs.list.
  • Setiap operasi mengimpor metadata yang dikumpulkan ke Knowledge Catalog dengan tugas impor metadata yang ID-nya adalah dts-run-RUN_ID. Untuk melihat hasil impor, seperti jumlah entri yang dibuat, filter log tugas di Logging menggunakan kueri berikut:

    logName="projects/PROJECT_ID/logs/dataplex.googleapis.com%2Fmetadata_job"
    AND resource.labels.metadata_job_id="dts-run-RUN_ID"
    
  • Untuk melihat hasil impor tanpa menggunakan Logging, panggil metode projects.locations.metadataJobs.get di projects/PROJECT_ID/locations/LOCATION/metadataJobs/dts-run-RUN_ID. Kolom importResult menampilkan jumlah entri dan link entri yang dibuat, diperbarui, tidak diubah, dan dihapus.

Menelusuri dan melihat metadata Snowflake Horizon

  1. Di konsol Google Cloud , buka halaman Search Knowledge Catalog.

    Buka Penelusuran

  2. Di panel Filters, filter aset Snowflake Horizon menggunakan bagian Project, Systems, dan Type aliases. Untuk memfilter semua metadata Snowflake Horizon, di bagian Systems, pilih Imported Context, lalu di subbagian Managed Connectors, pilih Snowflake Horizon.

  3. Di kolom penelusuran, masukkan kata kunci atau kueri penelusuran bahasa alami. Misalnya, untuk melihat semua aset Snowflake Horizon melalui penelusuran kata kunci, masukkan system=SNOWFLAKE.

    Untuk mempelajari lebih lanjut cara menelusuri resource, lihat Menelusuri resource di Knowledge Catalog. Untuk mempelajari lebih lanjut ekspresi yang dapat Anda gunakan di kolom penelusuran, lihat Sintaksis penelusuran untuk Knowledge Catalog.

Anda juga dapat menggunakan API LookupContext untuk mengambil konteks LLM untuk resource Snowflake Horizon tertentu. Untuk mengetahui informasi selengkapnya, lihat Mengambil konteks untuk aset data.

Langkah berikutnya