Anda dapat menggunakan fungsi bawaan atau fungsi yang ditentukan pengguna (UDF) dari MaxCompute untuk komputasi data. Fungsi bawaan dapat dipanggil secara langsung, sedangkan UDF hanya dapat digunakan setelah disesuaikan. Bagian ini menjelaskan operasi umum terkait fungsi, seperti pembuatan, penghapusan, dan peninjauan fungsi.
Tabel berikut merangkum operasi umum pada fungsi.
Operasi | Deskripsi | Dilakukan oleh | Platform Operasi |
Membuat UDF di proyek MaxCompute. | Pengguna dengan izin Write pada fungsi. | Operasi ini dapat dieksekusi pada platform berikut: | |
Menghapus UDF yang ada dari proyek MaxCompute. | Pengguna dengan izin Delete pada fungsi. | ||
Menampilkan informasi UDF tertentu di proyek MaxCompute. | Pengguna dengan izin Read pada fungsi. | ||
Menampilkan semua UDF di proyek MaxCompute. | Pengguna dengan izin List pada objek di proyek. | ||
Menampilkan informasi semua fungsi bawaan di proyek MaxCompute. | Pengguna dengan izin List pada objek di proyek. |
Buat UDF
Membuat UDF di proyek MaxCompute.
Batasan
Nama fungsi harus unik dalam satu proyek. Anda tidak dapat membuat fungsi dengan nama yang sama dengan fungsi yang sudah ada di proyek tersebut.
UDF tidak dapat menimpa fungsi bawaan MaxCompute. Hanya pemilik proyek yang dapat menggunakan UDF untuk menimpa fungsi bawaan. Jika Anda menggunakan UDF yang menimpa fungsi bawaan, peringatan akan ditampilkan di Ringkasan Logview pekerjaan Anda setelah pernyataan SQL dieksekusi.
Sintaksis
create function <function_name> as <'package_to_class'> using <'resource_list'>;Parameter
function_name: wajib. Nama UDF yang ingin dibuat.
package_to_class: wajib. Kelas dari UDF. Parameter ini bersifat case-sensitive dan harus diapit tanda kutip tunggal (').
Untuk UDF Java, tentukan nama ini sebagai nama kelas lengkap dari nama paket tingkat atas hingga nama kelas UDF.
Untuk UDF Python, tentukan nama ini dalam format Nama skrip Python.Nama kelas.
CatatanNama skrip Python mengacu pada nama sumber daya dasar yang secara unik mengidentifikasi suatu sumber daya. Nama sumber daya MaxCompute tidak bersifat case-sensitive. Misalnya, jika nama sumber daya adalah pyudf_test.py saat pertama kali Anda mengunggah sumber daya, kemudian Anda mengubah namanya menjadi PYUDF_TEST.py di DataStudio atau menggunakan PYUDF_TEST.py untuk menimpa pyudf_test.py di klien MaxCompute, nama sumber daya dasar tetap pyudf_test.py. Dalam hal ini, saat membuat UDF berdasarkan sumber daya, nama kelas harus berupa pyudf_test.SampleUDF. Anda dapat menjalankan perintah
list resources;untuk melihat nama sumber daya dasar yang secara unik mengidentifikasi semua sumber daya.
resource_list: wajib. Daftar sumber daya yang digunakan oleh UDF.
Daftar sumber daya harus mencakup sumber daya yang berisi kode UDF. Pastikan bahwa sumber daya telah diunggah ke MaxCompute.
Jika kode memanggil API Distributed Cache untuk membaca file sumber daya, daftar sumber daya ini juga harus mencakup daftar file sumber daya yang dibaca oleh UDF.
Daftar sumber daya terdiri dari beberapa nama sumber daya dan harus diapit tanda kutip tunggal ('). Nama sumber daya dipisahkan dengan koma (,).
Untuk menentukan proyek yang berisi sumber daya, tulis parameter dalam format
<project_name>/resources/<resource_name>.
Contoh
Contoh 1: Buat fungsi
my_lower. Dalam contoh ini, kelas UDF Javaorg.alidata.odps.udf.examples.Lowerberada di my_lower.jar.create function my_lower as 'org.alidata.odps.udf.examples.Lower' using 'my_lower.jar';Contoh 2: Buat fungsi
my_lower. Dalam contoh ini, kelas UDF Python MyLower berada di skrip pyudf_test.py dari proyektest_project.create function my_lower as 'pyudf_test.MyLower' using 'test_project/resources/pyudf_test.py';Contoh 3: Buat fungsi
test_udtf. Dalam contoh ini, kelas UDF Javacom.aliyun.odps.examples.udf.UDTFResourceberada di udtfexample1.jar. Fungsi ini bergantung pada file sumber daya file_resource.txt, sumber daya tabel table_resource1, dan sumber daya arsip test_archive.zip.create function test_udtf as 'com.aliyun.odps.examples.udf.UDTFResource' using 'udtfexample1.jar, file_resource.txt, table_resource1, test_archive.zip';
Hapus UDF
Menghapus UDF yang ada dari proyek MaxCompute.
Sintaksis
drop function <function_name>;Parameter
function_name: wajib. Nama UDF yang ada.
Contoh
-- Hapus fungsi my_lower. drop function my_lower;
Lihat UDF
Menampilkan informasi UDF tertentu di proyek MaxCompute. Informasi tersebut mencakup nama, pemilik, waktu pembuatan, nama kelas, dan daftar sumber daya UDF.
Sintaksis
desc function <function_name>;Parameter
function_name: wajib. Nama fungsi yang ada.
Nilai Kembali
Name: nama UDF.
Owner: akun yang memiliki UDF.
Created Time: waktu ketika UDF dibuat.
Class: kelas UDF, yang bersifat case-sensitive.
Resources: daftar sumber daya yang digunakan oleh UDF.
Contoh
-- Lihat informasi fungsi my_lower. desc function my_lower;Hasil berikut dikembalikan:
Name my_lower Owner ALIYUN$**** Created Time 2020-06-18 15:50:19 Class org.alidata.odps.udf.examples.Lower Resources project_name/my_lower.jar
Lihat daftar UDF
Menampilkan semua UDF di proyek MaxCompute.
Sintaksis Anda dapat menggunakan salah satu sintaksis berikut untuk melihat semua UDF di proyek MaxCompute:
list functions [-p <project_name>];show functions;
Parameter
project_name: opsional. Nama proyek MaxCompute.
Contoh
list functions;Hasil berikut dikembalikan:
Name Owner Create Time Class Resources ipv4_ipv6_aton ALIYUN$****@aliyun.com 2021-11-15 13:42:14 com.aliyun.odps.udf.udfFunction.IpLocation ipv4.txt,ipv6.txt,udf-1.0-SNAPSHOT.jar Lower_test ALIYUN$****@aliyun.com 2021-08-25 15:51:22 com.aliyun.odps.udf.example.Lower udf-1.0-SNAPSHOT.jar my_add ALIYUN$****@aliyun.com 2021-05-08 11:26:02 my_index ALIYUN$****@aliyun.com 2021-08-25 12:01:05 com.aliyun.odps.examples.udf.UdfArray udf-1.0-SNAPSHOT.jar my_sum ALIYUN$****@aliyun.com 2021-05-08 10:24:58 my_udtf ALIYUN$****@aliyun.com 2021-02-23 11:37:30 com.aliyun.odps.examples.udf.UDTFResource udf-1.0-SNAPSHOT.jar numpy ALIYUN$****@aliyun.com 2020-11-11 14:12:50 numpy.TryImport numpy.py,numpy-1.19.4-cp37-cp37m-manylinux1_x86_64.zip ST_Aggr_ConvexHull ALIYUN$****@aliyun.com 2021-03-18 17:06:29 com.esri.hadoop.hive.ST_Aggr_ConvexHull esri-geometry-api.jar,spatial-sdk-hive.jar ST_Aggr_Intersection ALIYUN$****@aliyun.com 2021-03-18 17:06:29 com.esri.hadoop.hive.ST_Aggr_Intersection esri-geometry-api.jar,spatial-sdk-hive.jar ST_Aggr_Union ALIYUN$****@aliyun.com 2021-03-18 17:06:30 com.esri.hadoop.hive.ST_Aggr_Union esri-geometry-api.jar,spatial-sdk-hive.jar ST_Area ALIYUN$****@aliyun.com 2021-03-18 17:06:30 com.esri.hadoop.hive.ST_Area esri-geometry-api.jar,spatial-sdk-hive.jar ST_AsBinary ALIYUN$****@aliyun.com 2021-03-18 17:06:30 com.esri.hadoop.hive.ST_AsBinary esri-geometry-api.jar,spatial-sdk-hive.jar ST_AsGeoJson ALIYUN$****@aliyun.com 2021-03-18 17:06:49 com.esri.hadoop.hive.ST_AsGeoJson esri-geometry-api.jar,spatial-sdk-hive.jar ST_AsJson ALIYUN$****@aliyun.com 2021-03-18 17:06:50 com.esri.hadoop.hive.ST_AsJson esri-geometry-api.jar,spatial-sdk-hive.jar ST_AsShape ALIYUN$****@aliyun.com 2021-03-18 17:06:50 com.esri.hadoop.hive.ST_AsShape esri-geometry-api.jar,spatial-sdk-hive.jar ST_AsText ALIYUN$****@aliyun.com 2021-03-18 17:06:50 com.esri.hadoop.hive.ST_AsText esri-geometry-api.jar,spatial-sdk-hive.jar ST_Bin ALIYUN$****@aliyun.com 2021-03-18 17:06:50 com.esri.hadoop.hive.ST_Bin esri-geometry-api.jar,spatial-sdk-hive.jar ST_BinEnvelope ALIYUN$****@aliyun.com 2021-03-18 17:07:01 com.esri.hadoop.hive.ST_BinEnvelope esri-geometry-api.jar,spatial-sdk-hive.jar ST_Boundary ALIYUN$****@aliyun.com 2021-03-18 17:07:01 com.esri.hadoop.hive.ST_Boundary esri-geometry-api.jar,spatial-sdk-hive.jar ST_Buffer ALIYUN$****@aliyun.com 2021-03-18 17:07:01 com.esri.hadoop.hive.ST_Buffer esri-geometry-api.jar,spatial-sdk-hive.jar ST_Centroid ALIYUN$****@aliyun.com 2021-03-18 17:07:01 com.esri.hadoop.hive.ST_Centroid esri-geometry-api.jar,spatial-sdk-hive.jar ST_Contains ALIYUN$****@aliyun.com 2021-03-18 17:07:01 com.esri.hadoop.hive.ST_Contains esri-geometry-api.jar,spatial-sdk-hive.jar ST_ConvexHull ALIYUN$****@aliyun.com 2021-03-18 17:07:13 com.esri.hadoop.hive.ST_ConvexHull esri-geometry-api.jar,spatial-sdk-hive.jar ST_CoordDim ALIYUN$****@aliyun.com 2021-03-18 17:07:14 com.esri.hadoop.hive.ST_CoordDim esri-geometry-api.jar,spatial-sdk-hive.jar ST_Crosses ALIYUN$****@aliyun.com 2021-03-18 17:07:14 com.esri.hadoop.hive.ST_Crosses esri-geometry-api.jar,spatial-sdk-hive.jar ST_Difference ALIYUN$****@aliyun.com 2021-03-18 17:07:14 com.esri.hadoop.hive.ST_Difference esri-geometry-api.jar,spatial-sdk-hive.jar ST_Dimension ALIYUN$****@aliyun.com 2021-03-18 17:07:14 com.esri.hadoop.hive.ST_Dimension esri-geometry-api.jar,spatial-sdk-hive.jar ST_Disjoint ALIYUN$****@aliyun.com 2021-03-18 17:07:31 com.esri.hadoop.hive.ST_Disjoint esri-geometry-api.jar,spatial-sdk-hive.jar ST_Distance ALIYUN$****@aliyun.com 2021-03-18 17:07:31 com.esri.hadoop.hive.ST_Distance esri-geometry-api.jar,spatial-sdk-hive.jar ST_EndPoint ALIYUN$****@aliyun.com 2021-03-18 17:07:31 com.esri.hadoop.hive.ST_EndPoint esri-geometry-api.jar,spatial-sdk-hive.jar ST_Envelope ALIYUN$****@aliyun.com 2021-03-18 17:07:32 com.esri.hadoop.hive.ST_Envelope esri-geometry-api.jar,spatial-sdk-hive.jar ST_EnvIntersects ALIYUN$****@aliyun.com 2021-03-18 17:07:32 com.esri.hadoop.hive.ST_EnvIntersects esri-geometry-api.jar,spatial-sdk-hive.jar ST_Equals ALIYUN$****@aliyun.com 2021-03-18 17:07:44 com.esri.hadoop.hive.ST_Equals esri-geometry-api.jar,spatial-sdk-hive.jar ST_ExteriorRing ALIYUN$****@aliyun.com 2021-03-18 17:07:44 com.esri.hadoop.hive.ST_ExteriorRing esri-geometry-api.jar,spatial-sdk-hive.jar ST_GeodesicLengthWGS84 ALIYUN$****@aliyun.com 2021-03-18 17:07:44 com.esri.hadoop.hive.ST_GeodesicLengthWGS84 esri-geometry-api.jar,spatial-sdk-hive.jar ST_GeomCollection ALIYUN$****@aliyun.com 2021-03-18 17:07:44 com.esri.hadoop.hive.ST_GeomCollection esri-geometry-api.jar,spatial-sdk-hive.jar ST_Geometry ALIYUN$****@aliyun.com 2021-03-18 17:07:44 com.esri.hadoop.hive.ST_Geometry esri-geometry-api.jar,spatial-sdk-hive.jar ST_GeometryN ALIYUN$****@aliyun.com 2021-03-18 17:07:55 com.esri.hadoop.hive.ST_GeometryN esri-geometry-api.jar,spatial-sdk-hive.jar ST_GeometryType ALIYUN$****@aliyun.com 2021-03-18 17:07:55 com.esri.hadoop.hive.ST_GeometryType esri-geometry-api.jar,spatial-sdk-hive.jar ST_GeomFromGeoJson ALIYUN$****@aliyun.com 2021-03-18 17:07:55 com.esri.hadoop.hive.ST_GeomFromGeoJson esri-geometry-api.jar,spatial-sdk-hive.jar ST_GeomFromJson ALIYUN$****@aliyun.com 2021-03-18 17:07:55 com.esri.hadoop.hive.ST_GeomFromJson esri-geometry-api.jar,spatial-sdk-hive.jar ST_GeomFromShape ALIYUN$****@aliyun.com 2021-03-18 17:07:56 com.esri.hadoop.hive.ST_GeomFromShape esri-geometry-api.jar,spatial-sdk-hive.jar ST_GeomFromText ALIYUN$****@aliyun.com 2021-03-18 17:08:10 com.esri.hadoop.hive.ST_GeomFromText esri-geometry-api.jar,spatial-sdk-hive.jar ST_GeomFromWKB ALIYUN$****@aliyun.com 2021-03-18 17:08:10 com.esri.hadoop.hive.ST_GeomFromWKB esri-geometry-api.jar,spatial-sdk-hive.jar
Lihat semua fungsi bawaan
Menampilkan informasi semua fungsi bawaan di proyek MaxCompute.
Sintaksis
show builtin functions [<function_name>];Parameter
function_name: opsional. Nama fungsi bawaan tertentu di proyek MaxCompute.
Contoh
show builtin functions;Hasil berikut dikembalikan:
ID = 20230307081023424gef2hwowr1 ::ABS SCALAR DECIMAL(?,?) ABS(DECIMAL(?,?) arg0),DOUBLE ABS(DOUBLE arg0),BIGINT ABS(BIGINT arg0),INT ABS(INT arg0) ::ACOS SCALAR DOUBLE ACOS(DOUBLE arg0),DOUBLE ACOS(DECIMAL(?,?) arg0) ::ADD_MONTHS SCALAR STRING ADD_MONTHS(DATE arg0, BIGINT arg1),STRING ADD_MONTHS(TIMESTAMP arg0, BIGINT arg1),STRING ADD_MONTHS(STRING arg0, BIGINT arg1) ::ALL_MATCH SCALAR BOOLEAN ALL_MATCH(ARRAY<T> arg0, java.util.function.Function<T, java.lang.Boolean> arg1) ::ANY_MATCH SCALAR BOOLEAN ANY_MATCH(ARRAY<T> arg0, java.util.function.Function<T, java.lang.Boolean> arg1) ::ANY_VALUE AGGREGATOR T ANY_VALUE([DISTINCT] T arg1) ::APPROX_DISTINCT AGGREGATOR BIGINT APPROX_DISTINCT([DISTINCT] P arg1, DOUBLE arg2),BIGINT APPROX_DISTINCT([DISTINCT] P arg1) ::ARG_MAX AGGREGATOR R ARG_MAX([DISTINCT] T arg1, R arg2) ::ARG_MIN AGGREGATOR R ARG_MIN([DISTINCT] T arg1, R arg2) ::ARRAY SCALAR ARRAY<STRING> ARRAY(),ARRAY<T> ARRAY(T arg0...) ::ARRAYS_OVERLAP SCALAR BOOLEAN ARRAYS_OVERLAP(ARRAY<T> arg0, ARRAY<T> arg1) ::ARRAYS_ZIP SCALAR null ::ARRAY_CONTAINS SCALAR BOOLEAN ARRAY_CONTAINS(ARRAY<T> arg0, T arg1) ::ARRAY_DISTINCT SCALAR ARRAY<T> ARRAY_DISTINCT(ARRAY<T> arg0) ::ARRAY_EXCEPT SCALAR ARRAY<T> ARRAY_EXCEPT(ARRAY<T> arg0, ARRAY<T> arg1) ::ARRAY_INTERSECT SCALAR null ::ARRAY_JOIN SCALAR STRING ARRAY_JOIN(ARRAY<STRING> arg0, STRING arg1, STRING arg2),STRING ARRAY_JOIN(ARRAY<STRING> arg0, STRING arg1) ::ARRAY_MAX SCALAR T ARRAY_MAX(ARRAY<T> arg0) ::ARRAY_MIN SCALAR T ARRAY_MIN(ARRAY<T> arg0) ::ARRAY_NORMALIZE SCALAR ARRAY<FLOAT> ARRAY_NORMALIZE(ARRAY<FLOAT> arg0, FLOAT arg1),ARRAY<DOUBLE> ARRAY_NORMALIZE(ARRAY<DOUBLE> arg0, DOUBLE arg1) ::ARRAY_POSITION SCALAR BIGINT ARRAY_POSITION(ARRAY<T> arg0, T arg1, BIGINT arg2),BIGINT ARRAY_POSITION(ARRAY<T> arg0, T arg1) ::ARRAY_REDUCE SCALAR OUT ARRAY_REDUCE(ARRAY<IN> arg0, BUF arg1, java.util.function.BiFunction<BUF, IN, BUF> arg2, java.util.function.Function<BUF, OUT> arg3) ::ARRAY_REMOVE SCALAR ARRAY<T> ARRAY_REMOVE(ARRAY<T> arg0, T arg1) ::ARRAY_REPEAT SCALAR ARRAY<T> ARRAY_REPEAT(T arg0, BIGINT arg1) ::ARRAY_SORT SCALAR ARRAY<T> ARRAY_SORT(ARRAY<T> arg0, java.util.function.BiFunction<T, T, java.lang.Long> arg1) ::ARRAY_UNION SCALAR ARRAY<T> ARRAY_UNION(ARRAY<T> arg0, ARRAY<T> arg1) ::ASCII SCALAR BIGINT ASCII(STRING arg0) ::ASIN SCALAR DOUBLE ASIN(DOUBLE arg0),DOUBLE ASIN(DECIMAL(?,?) arg0) ::ATAN SCALAR DOUBLE ATAN(DECIMAL(?,?) arg0),DOUBLE ATAN(DOUBLE arg0) ::ATAN2 SCALAR DOUBLE ATAN2(DECIMAL(?,?) arg0, DECIMAL(?,?) arg1),DOUBLE ATAN2(DOUBLE arg0, DOUBLE arg1) ::AVG AGGREGATOR DECIMAL(?,?) AVG([DISTINCT] DECIMAL(?,?) arg1),DOUBLE AVG([DISTINCT] DOUBLE arg1) ::AVG WINDOW DOUBLE AVG([DISTINCT] DOUBLE arg0),DECIMAL(?,?) AVG([DISTINCT] DECIMAL(?,?) arg0) ::BASE64 SCALAR STRING BASE64(BINARY arg0) ::BIN SCALAR STRING BIN(BIGINT arg0) ::BITAND SCALAR BIGINT BITAND(BIGINT arg0, BIGINT arg1) ::BITNOT SCALAR BIGINT BITNOT(BIGINT arg0) ::BITOR SCALAR BIGINT BITOR(BIGINT arg0, BIGINT arg1) ::BITWISE_AND_AGG AGGREGATOR BIGINT BITWISE_AND_AGG([DISTINCT] BIGINT arg1) ::BITWISE_OR_AGG AGGREGATOR BIGINT BITWISE_OR_AGG([DISTINCT] BIGINT arg1) ::BITXOR SCALAR BIGINT BITXOR(BIGINT arg0, BIGINT arg1) ::BROUND SCALAR DOUBLE BROUND(DOUBLE arg0, BIGINT arg1),DOUBLE BROUND(DOUBLE arg0) ......
Anda dapat menjalankan perintah show builtin functions; di klien MaxCompute versi V0.43.0 atau yang lebih baru.