Memecahkan masalah tampilan terwujud

Dokumen ini membantu Anda memecahkan masalah umum terkait tampilan terwujud di BigQuery, termasuk error saat membuat tampilan terwujud, kegagalan refresh, dan performa kueri yang tidak terduga.

Alur kerja diagnostik

Saat Anda menyelidiki masalah pada tampilan terwujud, ikuti langkah-langkah diagnostik berikut untuk mengidentifikasi penyebab utama:

  1. Verifikasi jenis tabel dan metadata. Pastikan tabel target adalah tampilan terwujud dan periksa opsi konfigurasinya:

    SELECT
     table_name,
     table_type
    FROM
     `PROJECT_ID.DATASET`.INFORMATION_SCHEMA.TABLES
    WHERE
     table_name = 'MATERIALIZED_VIEW';

    Ganti kode berikut:

    • PROJECT_ID: project yang berisi tampilan terwujud.
    • DATASET: set data yang berisi tampilan terwujud.
    • MATERIALIZED_VIEW: nama tampilan terwujud.

    Untuk memeriksa opsi konfigurasi seperti enable_refresh, refresh_interval_minutes, dan max_staleness, buat kueri tampilan INFORMATION_SCHEMA.TABLE_OPTIONS:

    SELECT
     table_name,
     option_name,
     option_value
    FROM
     `PROJECT_ID.DATASET`.INFORMATION_SCHEMA.TABLE_OPTIONS
    WHERE
     table_name = 'MATERIALIZED_VIEW';
  2. Periksa status pemuatan ulang terakhir. Kueri tampilan INFORMATION_SCHEMA.MATERIALIZED_VIEWS untuk memeriksa kapan tampilan terakhir dimuat ulang dan apakah pemuatan ulang otomatis terakhir mengalami error:

    SELECT
     table_name,
     last_refresh_time,
     refresh_watermark,
     last_refresh_status
    FROM
     `PROJECT_ID.DATASET`.INFORMATION_SCHEMA.MATERIALIZED_VIEWS
    WHERE
     table_name = 'MATERIALIZED_VIEW';

    Jika last_refresh_status bukan NULL, tugas pemuatan ulang otomatis terakhir akan gagal. Jika last_refresh_time adalah NULL atau lama, tampilan terwujud tidak pernah berhasil menyelesaikan pemuatan ulang atau gagal dimuat ulang.

  3. Periksa histori dan error tugas refresh. Buat kueri tampilan INFORMATION_SCHEMA.JOBS_BY_PROJECT untuk memeriksa tugas pemuatan ulang otomatis terbaru:

    SELECT
     job_id,
     creation_time,
     end_time,
     state,
     error_result.reason AS error_reason,
     error_result.message AS error_message,
     total_slot_ms,
     total_bytes_processed
    FROM
     `region-REGION`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
    WHERE
     job_id LIKE '%materialized_view_refresh_%'
     AND creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
    ORDER BY
     creation_time DESC
    LIMIT 50;

    Ganti REGION dengan region set data Anda—misalnya, us atau europe-west3.

  4. Periksa eksekusi kueri dan statistik penyesuaian cerdas. Jika kueri berjalan lebih lambat dari yang diharapkan, periksa kolom materialized_view_statistics di statistik tugas untuk memverifikasi apakah pengoptimal kueri menggunakan tampilan terwujud:

    SELECT
     job_id,
     total_slot_ms,
     total_bytes_billed,
     materialized_view_statistics
    FROM
     `region-REGION`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
    WHERE
     job_id = 'JOB_ID';

    Ganti JOB_ID dengan ID tugas kueri.

Memecahkan masalah error pembuatan tampilan terwujud

Bagian ini menjelaskan error yang mungkin Anda alami saat membuat tampilan yang di-materialisasi, beserta penyebab dan langkah-langkah penyelesaiannya.

Operator atau sintaksis SQL yang tidak didukung

Pesan error:

Unsupported operator in materialized view: KEYWORD

atau

Materialized view queries do not support FEATURE

Penyebab:

Tampilan terwujud inkremental mendukung subset terbatas dari sintaksis SQL untuk mengaktifkan pemeliharaan inkremental dan smart tuning. Anda mungkin mengalami error ini jika kueri yang menentukan tampilan terwujud Anda menyertakan fitur yang tidak didukung, seperti berikut:

  • Fungsi non-deterministik (misalnya, CURRENT_TIMESTAMP(), RAND(), atau SESSION_USER())
  • Fungsi jendela analisis dengan OVER()
  • Klausul ORDER BY atau LIMIT
  • DISTINCT tanpa agregasi
  • Subkueri dalam klausa WHERE atau SELECT
  • Fungsi yang ditentukan pengguna (UDF)

Penyelesaian:

  • Tinjau daftar fitur SQL yang tidak didukung.
  • Jika kueri Anda memerlukan kemampuan SQL yang lebih luas, pertimbangkan untuk membuat tampilan terwujud non-inkremental dengan menetapkan allow_non_incremental_definition = true dan menentukan interval max_staleness:

    CREATE MATERIALIZED VIEW `PROJECT_ID.DATASET.MATERIALIZED_VIEW`
    OPTIONS (
    enable_refresh = true,
    refresh_interval_minutes = 60,
    max_staleness = INTERVAL "4" HOUR,
    allow_non_incremental_definition = true
    ) AS
    SELECT
    ...

    Ganti kode berikut:

    • PROJECT_ID: project yang berisi tampilan terwujud.
    • DATASET: set data yang berisi tampilan terwujud.
    • MATERIALIZED_VIEW: nama tampilan terwujud.

    Tampilan terwujud non-inkremental mendukung serangkaian kueri SQL yang lebih luas, tetapi tampilan ini selalu melakukan refresh penuh dan tidak mendukung penyesuaian cerdas.

  • Jika sintaksis SQL yang diperlukan tidak didukung dalam tampilan terwujud non-inkremental, gunakan tampilan logis atau kueri terjadwal untuk menulis hasil ke tabel tujuan.

max_staleness tidak valid dengan tabel dasar CDC

Pesan error:

Materialized view PROJECT_ID:DATASET.MATERIALIZED_VIEW has a CDC table as base table PROJECT_ID:DATASET.TABLE but does not have valid max_staleness. Materialized views over CDC tables must have max_staleness set at least 2 times the base table's max_staleness: 0-0 0 0:0:0

Penyebab:

Saat Anda membuat tampilan terwujud pada tabel dasar pengambilan data perubahan (CDC), opsi max_staleness tampilan terwujud harus dikonfigurasi setidaknya dua kali nilai max_staleness tabel dasar.

Penyelesaian:

  1. Periksa nilai max_staleness tabel CDC dasar dengan membuat kueri tampilan INFORMATION_SCHEMA.TABLE_OPTIONS.
  2. Tetapkan opsi max_staleness tampilan terwujud ke nilai yang setidaknya dua kali lipat nilai max_staleness tabel dasar. Misalnya, jika tabel CDC dasar memiliki nilai max_staleness 15 menit, tetapkan nilai max_staleness tabel virtual ke minimal 30 menit. Untuk mengetahui informasi selengkapnya, lihat "Pernyataan ALTER MATERIALIZED VIEW SET OPTIONS" di Pernyataan bahasa definisi data (DDL) di GoogleSQL.

Tampilan terwujud yang dipartisi melalui tabel dasar yang tidak dipartisi

Pesan error:

Partitioned incremental materialized view must be created on top of partitioned managed storage base table.

Penyebab:

Untuk membuat tampilan terwujud inkremental yang dipartisi, tabel dasar yang mendasarinya juga harus dipartisi, dan kolom partisi tampilan terwujud harus sejajar dengan kolom partisi tabel dasar.

Penyelesaian:

  • Jika Anda ingin tampilan terwujud dipartisi, pastikan tabel dasar dipartisi dan konfigurasi tampilan terwujud untuk menggunakan kolom partisi yang sama. Untuk mengetahui informasi selengkapnya, lihat Perataan partisi.
  • Jika tabel dasar tidak dipartisi, buat tampilan terwujud tanpa klausa PARTITION BY.
  • Jika Anda memerlukan tampilan yang dipartisi melalui tabel yang tidak dipartisi, buat tampilan terwujud non-inkremental dengan allow_non_incremental_definition = true dan max_staleness. Tampilan terwujud non-inkremental tidak memerlukan penyelarasan partisi dengan tabel dasar.

Replika set data lintas region bersifat hanya baca

Pesan error:

The dataset replica of the cross region dataset 'PROJECT_ID:DATASET' in region 'REGION' is read-only because it's not the primary replica.

Penyebab:

Saat Anda menggunakan replikasi set data lintas region, replika sekunder bersifat hanya baca. Anda tidak dapat membuat tampilan terwujud di region replika sekunder.

Penyelesaian:

Buat tampilan terwujud di region utama set data yang direplikasi. Jika Anda memerlukan tampilan terwujud di region replika, buat replika tampilan terwujud di region tersebut. Untuk mengetahui informasi selengkapnya, lihat Mengelola replika tampilan terwujud.

Melebihi batas tabel dasar

Pesan error:

Materialized views support at most 10 source tables, query has NUMBER_OF_SOURCE_TABLES

Penyebab:

Tampilan terwujud BigQuery mendukung gabungan di paling banyak 10 tabel dasar.

Penyelesaian:

Refaktorkan kueri yang menentukan tampilan terwujud untuk mereferensikan 10 tabel dasar atau kurang. Jika arsitektur Anda memerlukan penggabungan lebih dari 10 tabel, pertimbangkan untuk menggabungkan tabel statis atau dimensi ke dalam tabel perantara terlebih dahulu, atau gunakan kueri terjadwal atau pipeline Dataform.

Resource terlampaui selama pembuatan tampilan terwujud

Pesan error:

Resources exceeded during query execution: The data accessed in this query is too large; consider accessing fewer tables, or for partitioned tables, fewer partitions.

Penyebab:

Saat Anda membuat tampilan terwujud, BigQuery akan melakukan refresh penuh awal untuk mengisi tampilan. Jika tabel dasar yang mendasarinya berisi sejumlah besar data yang tidak dipartisi, atau jika tampilan menghasilkan agregasi perantara berkardinalitas tinggi, refresh awal dapat melampaui batas memori slot atau kueri.

Penyelesaian:

  • Tambahkan kondisi filter dalam klausa WHERE dari tampilan terwujud untuk membatasi cakupan data yang dipindai ke subkumpulan yang diperlukan.
  • Sejajarkan partisi tampilan terwujud dengan partisi tabel dasar untuk memangkas partisi selama pemuatan ulang.
  • Jika menggunakan komputasi on-demand, pertimbangkan untuk menggunakan edisi BigQuery dengan reservasi slot khusus untuk menyediakan kapasitas komputasi yang memadai untuk refresh besar.

Masalah pada tabel BigLake dan penyimpanan metadata ke dalam cache

Gejala:

Tampilan terwujud di atas tabel eksternal BigLake gagal dibuat atau gagal dimuat ulang.

Penyebab:

Tampilan terwujud di atas tabel eksternal memiliki persyaratan arsitektur tertentu:

  • Tampilan terwujud hanya didukung di tabel BigLake dengan caching metadata diaktifkan.
  • Nilai max_staleness tampilan terwujud harus lebih besar daripada nilai max_staleness tabel dasar BigLake pokok.
  • Tampilan terwujud dapat mereferensikan tabel eksternal BigLake atau tabel penyimpanan terkelola BigQuery, tetapi tidak dapat menggabungkan jenis dalam satu tampilan terwujud.

Penyelesaian:

  1. Pastikan caching metadata diaktifkan di semua tabel dasar BigLake yang mendasarinya.
  2. Konfigurasi max_staleness pada tampilan terwujud ke nilai yang lebih tinggi daripada interval cache metadata tabel dasar. Misalnya, jika interval cache tabel dasar adalah 30 menit, tetapkan max_staleness tampilan terwujud ke setidaknya 45 menit untuk memberikan buffer bagi eksekusi refresh.
  3. Jangan mencampur tabel eksternal dan tabel terkelola dalam definisi tampilan terwujud.

Memecahkan masalah pembaruan

Bagian ini menjelaskan penyebab umum kegagalan pemuatan ulang dan keterlambatan performa untuk tampilan terwujud.

Perubahan skema tabel dasar (invalidQuery)

Gejala:

Kolom last_refresh_status di INFORMATION_SCHEMA.MATERIALIZED_VIEWS menampilkan error invalidQuery, dan refresh otomatis berhenti berjalan.

Penyebab:

Jika skema tabel dasar berubah—seperti menghapus kolom yang direferensikan oleh tampilan terwujud, mengganti nama kolom, atau mengubah jenis data kolom—kueri yang mendasari yang menentukan tampilan terwujud menjadi tidak valid.

Penyelesaian:

BigQuery tidak mendukung pengubahan skema kolom tampilan terwujud yang ada. Untuk mengatasi pembatalan skema, lakukan tindakan berikut:

  1. Buat ulang tampilan terwujud menggunakan pernyataan CREATE OR REPLACE MATERIALIZED VIEW:

    CREATE OR REPLACE MATERIALIZED VIEW `PROJECT_ID.DATASET.MATERIALIZED_VIEW`
    OPTIONS (
     enable_refresh = true,
     refresh_interval_minutes = 30
    ) AS
    SELECT
     ...

    Ganti kode berikut:

    • PROJECT_ID: project yang berisi tampilan terwujud.
    • DATASET: set data yang berisi tampilan terwujud.
    • MATERIALIZED_VIEW: nama tampilan terwujud.
  2. Pastikan definisi baru cocok dengan skema tabel dasar yang diperbarui.

Masa berlaku partisi tabel dasar, pemotongan, atau perubahan DML

Gejala:

Pemuatan ulang tampilan terwujud gagal, atau kueri terhadap tampilan terwujud melakukan penggantian ke tabel dasar dan berjalan lambat.

Penyebab:

Operasi tabel dasar berikut membatalkan data tampilan terwujud yang ada:

  • Memangkas tabel dasar atau partisi tabel dasar (TRUNCATE TABLE)
  • Masa berlaku partisi pada tabel dasar
  • Pernyataan bahasa pengolahan data (DML) DELETE atau MERGE pada tabel yang tidak dipartisi atau tabel dasar yang digabungkan sekunder

Saat operasi ini terjadi, partisi yang terpengaruh (atau seluruh tampilan terwujud untuk tabel yang tidak dipartisi) ditandai sebagai tidak valid.

Penyelesaian:

  1. Picu pemuatan ulang secara manual untuk memulihkan tampilan terwujud ke status yang valid:

    CALL BQ.REFRESH_MATERIALIZED_VIEW('PROJECT_ID.DATASET.MATERIALIZED_VIEW');
  2. Jika Anda menjalankan pipeline ETL batch yang menjalankan pernyataan DML atau memangkas data secara rutin, nonaktifkan refresh otomatis dan panggil BQ.REFRESH_MATERIALIZED_VIEW di akhir pipeline ETL Anda. Untuk mengetahui informasi selengkapnya, lihat Pemuatan ulang otomatis.

Tugas pembaruan yang kehabisan waktu

Gejala:

Tugas refresh gagal dengan error waktu tunggu habis setelah berjalan selama beberapa jam (hingga 12 jam).

Penyebab:

Seiring bertambahnya ukuran tabel dasar, volume data yang diproses selama pemuatan ulang akan meningkat. Jika kueri tampilan terwujud tidak memfilter baris, atau jika tampilan tidak dapat melakukan pembaruan inkremental karena pembatalan penuh, setiap pembaruan memerlukan pemindaian penuh tabel dasar, yang dapat menghabiskan waktu slot.

Penyelesaian:

  • Tambahkan kriteria filter dalam klausa WHERE tampilan terwujud untuk membatasi data historis yang tidak diperlukan.
  • Pastikan tampilan terwujud disejajarkan dengan partisi tabel dasar sehingga hanya partisi yang diubah yang dimuat ulang secara inkremental.
  • Alokasikan pemesanan slot dengan kapasitas yang cukup untuk mengakomodasi workload refresh.

Pesan pemuatan ulang duplikat

Pesan:

Materialized view is already being refreshed.

Penyebab:

Jika tabel dasar dalam tampilan terwujud JOIN diperbarui secara bersamaan, atau jika pemuatan ulang manual dipicu saat pemuatan ulang otomatis sedang berlangsung, BigQuery akan mendeteksi pemuatan ulang serentak dan membatalkan tugas duplikat.

Penyelesaian:

Perilaku ini normal dan sementara. Tugas duplikat dihentikan untuk mencegah pemrosesan yang berlebihan, dan Anda tidak ditagih untuk upaya pemuatan ulang duplikat. Anda tidak perlu melakukan tindakan apa pun.

Penundaan pembaruan data streaming (penyimpanan yang dioptimalkan untuk tulis)

Gejala:

Kueri terhadap tabel dasar dengan data streaming kecepatan tinggi tidak muncul di tampilan terwujud dengan segera, atau kueri kembali ke tabel dasar.

Penyebab:

Data yang di-streaming ke BigQuery menggunakan Storage Write API awalnya disimpan di penyimpanan yang dioptimalkan untuk penulisan (buffer streaming). Tugas pemuatan ulang tampilan terwujud memproses data setelah data di-commit dan dikonversi dari buffer streaming ke penyimpanan berbasis kolom yang dioptimalkan.

Untuk mempertahankan konsistensi real-time, kueri yang membaca dari tampilan terwujud membaca data yang di-commit dari tampilan terwujud dan secara bersamaan membaca delta langsung dari buffer streaming tabel dasar.

Penyelesaian:

  • Jika konsistensi baca real-time pada data streaming diperlukan, perencana kueri akan otomatis menggabungkan data tampilan terwujud dengan delta tabel dasar.
  • Jika konsistensi real-time tidak diperlukan dan Anda ingin menghindari pemindaian buffer streaming pada setiap kueri, tetapkan max_staleness pada tampilan terwujud (misalnya, max_staleness = INTERVAL "15" MINUTE). Kueri kemudian dapat dibaca langsung dari tampilan terwujud yang telah dihitung sebelumnya tanpa pemrosesan delta.

Memecahkan masalah performa kueri dan penyesuaian cerdas

Bagian ini menjelaskan cara memecahkan masalah kueri yang berjalan lebih lambat dari yang diharapkan atau tidak memanfaatkan penyesuaian cerdas.

Memverifikasi penggunaan penyesuaian cerdas

Saat Anda membuat kueri tabel dasar, BigQuery menggunakan penyesuaian cerdas untuk otomatis menulis ulang kueri agar menggunakan tampilan terwujud yang tersedia jika hal tersebut meningkatkan performa dan mengurangi biaya.

Untuk memeriksa apakah kueri menggunakan tampilan terwujud, periksa kolom materialized_view_statistics di detail tugas kueri atau buat kueri tabel virtual INFORMATION_SCHEMA.JOBS_BY_PROJECT:

SELECT
  job_id,
  total_slot_ms,
  total_bytes_billed,
  mv.table_reference.dataset_id,
  mv.table_reference.table_id,
  mv.chosen,
  mv.rejected_reason
FROM
  `region-REGION`.INFORMATION_SCHEMA.JOBS_BY_PROJECT,
  UNNEST(materialized_view_statistics.materialized_view) AS mv
WHERE
  job_id = 'JOB_ID';

Ganti kode berikut:

  • REGION: region set data Anda (misalnya, us atau europe-west3).
  • JOB_ID: ID tugas kueri.

Dalam objek materialized_view_statistics, setiap entri dalam array materialized_view berisi kolom berikut:

  • table_reference: mengidentifikasi kandidat tampilan terwujud.
  • chosen: boolean yang menunjukkan apakah pengoptimal kueri memilih tampilan terwujud untuk eksekusi (true) atau menolaknya (false).
  • estimated_bytes_saved: estimasi byte yang tidak dipindai oleh kueri dengan menggunakan tampilan terwujud.
  • rejected_reason: jika chosen adalah false, menentukan alasan mengapa pengoptimal menolak tampilan terwujud.

Untuk mengetahui informasi selengkapnya tentang alasan penolakan dan enum rejected_reason, lihat Memahami alasan penolakan tampilan terwujud.

Alasan umum penolakan tampilan terwujud

Jika chosen adalah false, periksa nilai rejected_reason untuk mendiagnosis penyebabnya:

Nilai rejected_reason Deskripsi Resolusi
NO_DATA Tampilan terwujud tidak memiliki data yang di-cache karena belum dimuat ulang, atau pemuatan ulang awal gagal. Picu pemuatan ulang manual menggunakan CALL BQ.REFRESH_MATERIALIZED_VIEW(...).
COST Pengoptimal kueri memperkirakan bahwa membuat kueri tabel dasar (atau membaca dari cache kueri) lebih murah daripada membuat kueri tampilan terwujud. Tinjau filter dan partisi kueri. Jika kueri tabel dasar hanya memindai partisi kecil, sementara tampilan terwujud mencakup beberapa partisi, membuat kueri tabel dasar secara langsung mungkin lebih efisien.
BASE_TABLE_DATA_CHANGE Perubahan data dalam satu atau beberapa tabel dasar membatalkan validasi data yang di-cache di luar periode keusangan yang dikonfigurasi. Lakukan refresh manual atau konfigurasi max_staleness untuk mengizinkan kueri membaca data usang tanpa melakukan penggantian ke tabel dasar.
BASE_TABLE_TRUNCATED Tabel dasar dipangkas, sehingga membatalkan semua data tampilan terwujud. Muat ulang tampilan terwujud setelah data diisi ulang.
BASE_TABLE_EXPIRED_PARTITION Masa berlaku partisi di tabel dasar telah berakhir. Pastikan setelan masa berlaku partisi cocok antara tabel dasar dan tampilan terwujud, lalu muat ulang tampilan.
BASE_TABLE_PARTITION_EXPIRATION_CHANGE Durasi masa berlaku partisi tabel dasar telah diubah. Muat ulang tampilan terwujud untuk menyelaraskan kembali metadata masa berlaku partisi.
BASE_TABLE_INCOMPATIBLE_METADATA_CHANGE Perubahan metadata terjadi pada tabel dasar (seperti modifikasi skema). Buat ulang tampilan terwujud menggunakan CREATE OR REPLACE MATERIALIZED VIEW.
BASE_TABLE_TOO_STALE Metadata yang di-cache dari tabel dasar (misalnya, pada tabel eksternal BigLake) lebih lama dari batas yang diizinkan. Muat ulang cache metadata tabel eksternal.
BASE_TABLE_FINE_GRAINED_SECURITY_POLICY Pengguna kueri tidak memiliki akses berdasarkan kebijakan kontrol akses tingkat baris atau tingkat kolom pada tabel dasar. Verifikasi izin IAM dan pemberian kebijakan data.
TIME_ZONE Tampilan dimuat ulang menggunakan zona waktu yang berbeda dengan zona waktu kueri saat ini. Menyelaraskan setelan zona waktu antara lingkungan dan tugas refresh Anda.

Tampilan terwujud tidak dipertimbangkan (struktur kueri tidak cocok)

Jika tampilan terwujud tidak tercantum dalam materialized_view_statistics, pengoptimal kueri menentukan selama penguraian sintaksis bahwa pola kueri tidak cocok dengan definisi tampilan terwujud.

Penyebab umumnya meliputi:

  1. Ketidakcocokan agregasi atau filter. Kueri menggunakan fungsi agregasi, kolom pengelompokan, atau predikat filter yang tidak dapat dihitung dari agregasi yang telah dihitung sebelumnya dalam tampilan terwujud.
    • Resolusi: Selaraskan fungsi agregat dan pengelompokan antara kueri Anda dan definisi tampilan terwujud.
  2. Tampilan terwujud non-inkremental. Tampilan yang dibuat dengan allow_non_incremental_definition = true tidak mendukung penyesuaian cerdas.
    • Penyelesaian: Buat kueri tampilan terwujud non-inkremental secara langsung dengan menentukan nama tampilan dalam klausa FROM.
  3. Kueri langsung atas tampilan yang tidak terbaru. Jika Anda mengkueri tampilan terwujud secara langsung yang memiliki setelan max_staleness, kueri akan menampilkan hasil pra-komputasi yang tidak terbaru hingga max_staleness tanpa pemrosesan delta dari tabel dasar.

Error sketsa HyperLogLog yang tidak kompatibel

Pesan error:

Invalid or incompatible sketch in HLL_COUNT.MERGE_PARTIAL

Penyebab:

Saat Anda menggunakan fungsi agregasi perkiraan seperti HLL_COUNT.INIT dan HLL_COUNT.MERGE_PARTIAL, BigQuery akan menggunakan sketsa HyperLogLog. Jika parameter presisi yang ditentukan dalam kueri tidak cocok dengan parameter presisi yang ditentukan dalam tampilan terwujud, operasi penggabungan sketsa akan gagal.

Penyelesaian:

Pastikan parameter presisi (misalnya, HLL_COUNT.INIT(x, 12)) sama di definisi tampilan terwujud dan kueri yang mereferensikan atau menulis ulang ke tampilan.

Memecahkan masalah perubahan tampilan dan modifikasi skema

Bagian ini menjelaskan masalah yang mungkin Anda alami saat mengubah skema atau opsi tampilan terwujud.

Mengedit skema tampilan terwujud

Masalah:

Mencoba menambahkan atau mengubah kolom dalam tampilan terwujud menggunakan ALTER TABLE atau konsol Google Cloud akan menghasilkan error, atau opsi Edit Skema tidak tersedia.

Penyebab:

BigQuery tidak mendukung modifikasi skema kolom tampilan terwujud secara langsung.

Penyelesaian:

  • Anda dapat mengubah opsi tampilan terwujud (seperti enable_refresh, refresh_interval_minutes, dan max_staleness) menggunakan pernyataan ALTER MATERIALIZED VIEW SET OPTIONS:

    ALTER MATERIALIZED VIEW `PROJECT_ID.DATASET.MATERIALIZED_VIEW`
    SET OPTIONS (
    enable_refresh = true,
    refresh_interval_minutes = 20
    );

    Ganti kode berikut:

    • PROJECT_ID: project yang berisi tampilan terwujud.
    • DATASET: set data yang berisi tampilan terwujud.
    • MATERIALIZED_VIEW: nama tampilan terwujud.
  • Untuk mengubah definisi kueri SQL, menambahkan kolom, atau mengubah jenis data kolom, buat ulang tampilan menggunakan CREATE OR REPLACE MATERIALIZED VIEW:

    CREATE OR REPLACE MATERIALIZED VIEW `PROJECT_ID.DATASET.MATERIALIZED_VIEW`
    AS SELECT
    ...

Langkah berikutnya