Analytics

Upgrade Guide — JOIN Master Data di Question

Catatan rilis dan panduan migrasi untuk question yang menggabungkan data proses dengan Master Data. Query yang membaca masterdata_tables atau masterdata_records langsung tidak lagi didukung; gunakan <<master_slug>>.

Halaman ini untuk PIC implementor dan Admin SOP yang punya question dengan data referensi (kategori, cabang, jenis dokumen) dari Master Data.

Yang baru

Master Data kini bisa di-JOIN lewat <<master_slug>>, sama seperti tabel proses. Sistem otomatis membatasi data pada workspace Anda. Cara memilih dan memakainya ada di Memakai Master Data.

Perubahan yang memutus query lama

Setelah upgrade, question yang menyebut tabel tanpa pembungkus <<...>> ditolak. Ini mencakup:

  • tabel Master Data langsung: masterdata_tables, masterdata_records;
  • tabel sistem: tenants, users, dan semua tabel dengan awalan public.;
  • schema lain, termasuk schema workspace lain (v_…) dan information_schema.

Alasannya: pola lama membaca tabel milik semua workspace dengan tenant_id yang ditulis manual. Salah angka berarti membaca data workspace lain, dan angka itu berubah bila question dipindah ke instance atau workspace lain.

Sebelum dan sesudah

Sebelum (tidak lagi didukung):

SELECT p.proc_inst_id_, p.state, p.input_dest AS destinasi,
       mt.name AS tabel_master_data, md.data->>'name' AS kategori
FROM <<liburan>> p
LEFT JOIN masterdata_tables mt ON mt.tenant_id = 2 AND mt.slug = 'kategori-cuti'
LEFT JOIN masterdata_records md ON md.masterdata_table_id = mt.id
ORDER BY p.created_at_ DESC

Masalah pada query ini:

  1. Hasil berlipat. Tidak ada kondisi yang menghubungkan p dengan md, sehingga setiap baris proses dikalikan dengan semua record kategori. Pada data uji (2 proses, 3 kategori) query ini menghasilkan 6 baris, dan kategori yang tampil tidak sesuai pilihan di form.
  2. Mengandalkan angka tenant_id yang ditulis manual.
  3. Membaca JSON mentah (data->>'name'): nama tabel dan kolom ditulis sebagai teks, tidak ikut tipe kolom Master Data.

Sesudah:

SELECT p.proc_inst_id_, p.state, p.input_dest AS destinasi, m.name AS kategori
FROM <<liburan>> p
LEFT JOIN <<master_kategori-cuti>> m ON m.kode = p.input_kat
ORDER BY p.created_at_ DESC
  • Pilih <<master_kategori-cuti>> dari dropdown Tables, grup Master Data.
  • Kolom penghubung adalah kolom Master Data yang Anda pilih sebagai Value Field pada field Master Data Select. Di contoh ini kode, sehingga m.kode = p.input_kat.
  • Pada data uji yang sama, query ini menghasilkan 2 baris, masing-masing dengan kategori sesuai pilihan di form.

Bila Master Data punya kolom bernama id, di query kolom itu tampil sebagai id_2. Lihat catatan di Memakai Master Data.

Pesan error dan cara migrasi

Pesan di questionPenyebabMigrasi
Failed to execute query: … relation "masterdata_tables" does not exist (SQLSTATE 42P01)Tabel disebut tanpa schema (masterdata_tables, masterdata_records, tenants, …)Ganti dengan <<master_slug>> untuk Master Data. Untuk tabel proses, pakai <<NamaProses>>
access denied: schema 'public' is not allowedMemakai public.…Sama seperti di atas. Data sistem hanya lewat sumber Data sistem di dropdown Tables
access denied: schema 'v_…' is not allowedMenyebut schema workspace lainHapus nama schema, pakai <<NamaProses>>
access denied: "information_schema" is not allowed in a question queryMembaca katalog databaseTidak ada pengganti; hapus bagian itu
Query must contain at least one table wrapper (<<table_name>>)Query tidak memakai <<...>> sama sekaliPilih tabel dari dropdown Tables

Checklist untuk PIC implementor

Sebelum upgrade — temukan question yang terdampak. Buka tiap question di Analytics → Question, lalu cari teks berikut di query editor:

  • masterdata_
  • public.
  • tenant_id =
  • tenants, users, information_schema

Migrasi — untuk setiap question yang cocok:

  1. Hapus JOIN ke masterdata_tables dan masterdata_records.
  2. Sisipkan <<master_slug>> dari dropdown Tables (grup Master Data).
  3. Tulis kondisi ON antara kolom Master Data (Value Field) dan kolom field Master Data Select pada proses.
  4. Hapus angka tenant_id yang ditulis manual.

Uji ulang — jalankan question dengan Run Query. Pastikan jumlah baris sama dengan jumlah proses (bukan proses × record Master Data) dan kategori sesuai pilihan di form. Simpan question, lalu cek Dashboard yang memakainya.