Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Tidak dapat menyelesaikan fungsi <routineName> pada jalur pencarian <searchPath>.
Parameter-parameternya
- routineName: Nama fungsi yang tidak dapat diselesaikan.
-
searchPath: Daftar skema yang diurutkan yang dicari jika
routineNametidak memenuhi syarat skema.
Penjelasan
Fungsi yang bertahan terdiri dari tiga bagian nama: <catalog>.<schema>.<relation>.
Jika Anda tidak menentukan ketiga bagian nama, maka secara implisit akan diselesaikan menggunakan katalog saat ini atau skema saat ini.
Ini mirip dengan cara direktori kerja sistem file Anda memengaruhi file mana yang dapat Anda lihat, kecuali Anda sepenuhnya menentukan jalur.
Fungsi sementara hanya ada dalam sesi atau kueri dan tidak boleh memenuhi syarat.
Alasan paling umum untuk tidak menemukan fungsi adalah:
- Fungsi tidak ada.
- Nama fungsi salah eja.
- Fungsi yang ditentukan pengguna terletak di skema yang berbeda.
- Fungsi yang ditentukan pengguna tidak terletak di skema saat ini.
- Anda tidak dapat melihat fungsi yang ditentukan pengguna karena Anda tidak memiliki akses.
- Fungsi bawaan yang Anda coba panggil tidak tersedia pada rilis Azure Databricks ini.
Mitigasi
Mitigasi kesalahan dengan meninjau hal berikut.
Apakah Anda salah mengeja nama fungsi?
Gunakan
SHOW FUNCTIONS IN \<schema\>untuk memverifikasi nama fungsi yang benar.Apakah fungsi dalam skema yang berbeda?
Jika fungsi terletak di katalog di Katalog Unity, jalankan kueri berikut:
SELECT routine_schema FROM information_schema.routines WHERE routine_name = '<routinename>'Ini mencantumkan skema dalam katalog saat ini tempat fungsi berada.
Jika fungsi terletak di luar Katalog Unity, gunakan
SHOW SCHEMASuntuk menemukan skema kandidat. GunakanSHOW FUNCTIONS IN \<schema\>untuk memeriksa fungsi.Apakah Anda tidak sepenuhnya memenuhi syarat nama, dan hasilnya
VALUES current_schema()tidak cocok dengan nama fungsi yang memenuhi syarat?Memenuhi syarat
functionNamedengan skema dan katalognya, atau jalankanUSE SCHEMAuntuk mengatur skema implisit.Apakah Anda mengacu pada fungsi sementara, tetapi fungsinya ada di sesi sebelumnya, sesi yang telah kedaluwarsa, atau sesi yang berbeda?
Buat ulang fungsi sementara menggunakan
CREATE TEMPORARY FUNCTION \<routineName\> …, atau beralih ke menggunakan fungsi yang bertahan.Apakah Anda ingin mengeluarkan pernyataan DDL, seperti
DROP FUNCTIONuntuk berjaga-jaga jika objek ada?Terbitkan pernyataan menggunakan
IF EXISTSklausa, seperti:DROP FUNCTION \<routineName\> IF EXISTS.Apakah Anda tahu fungsi ada, tetapi Anda tidak dapat melihatnya?
SHOW FUNCTIONSHubungi administrator Anda untuk mendapatkan akses ke fungsi. Anda mungkin juga memerlukan akses ke skema dan katalog.
Untuk informasi selengkapnya tentang cara mengatasi kesalahan, lihat Resolusi fungsi.
Contoh
> CREATE SCHEMA IF NOT EXISTS myschema;
> CREATE OR REPLACE FUNCTION myschema.myfunc() RETURNS INT RETURN 5;
--
-- The function name has been misspelled
--
> SELECT myschema.myfun();
[UNRESOLVED_ROUTINE] Cannot resolve function `myschema`.`myfun` on search path [`system`.`builtin`, `system`.`session`, `spark_catalog`.`default`].; line 1 pos 7
-- Use SHOW FUNCTIONS to find the correct nme
> SHOW USER FUNCTIONS IN myschema;
spark_catalog.myschema.myfunc
-- Correct the spelling
> SELECT myschema.myfunc();
5
--
-- The qualifier has been misspelled
--
> CREATE SCHEMA IF NOT EXISTS wrongschema;
> SELECT wrongschema.myfunc;
[UNRESOLVED_ROUTINE] Cannot resolve function `wrongschema`.`myfunc` on search path [`system`.`builtin`, `system`.`session`, `spark_catalog`.`default`].; line 1 pos 7
-- Find candidate schemas
> SHOW SCHEMAS;
myschema
wrongschema
-- Verify the function exists in the candidate schema
> SHOW USER FUNCTIONS IN myschema;
spark_catalog.myschema.myfunc
> SELECT myschema.myfunc();
5
--
-- Change current schema to find an unqualified function
--
> SELECT myfunc();
[UNRESOLVED_ROUTINE] Cannot resolve function `myfunc` on search path [`system`.`builtin`, `system`.`session`, `spark_catalog`.`default`].; line 1 pos 7
> USE SCHEMA myschema;
SELECT myfunc();
5