MaxComputeの組み込み関数またはユーザー定義関数 (UDF) をデータコンピューティングに使用できます。 組み込み関数は直接呼び出すことができます。 UDFはカスタマイズ後にのみ呼び出すことができます。 このトピックでは、関数の作成、削除、表示など、関数に対する一般的な操作について説明します。
関数の一般的な操作を次の表に示します。
API 操作 | 説明 | Performed by | 操作プラットフォーム |
MaxComputeプロジェクトにUDFを作成します。 | 関数の書き込み権限を持つユーザー | このトピックで説明するステートメントは、次のプラットフォームで実行できます。 | |
MaxComputeプロジェクトから既存のUDFを削除します。 | 関数の削除権限を持つユーザー | ||
MaxComputeプロジェクト内の指定されたUDFの情報を表示します。 | 関数の読み取り権限を持つユーザー | ||
MaxComputeプロジェクト内のすべてのUDFを表示します。 | プロジェクト内のオブジェクトに対するList権限を持つユーザー | ||
すべての組み込み関数を表示 | MaxComputeプロジェクトのすべての組み込み関数の情報を表示します。 | プロジェクト内のオブジェクトに対するList権限を持つユーザー |
UDF の作成
MaxComputeプロジェクトにUDFを作成します。
制限事項
関数名はプロジェクト内で一意である必要があります。 プロジェクト内の既存の関数と同じ名前の関数を作成することはできません。
UDFはMaxComputeの組み込み関数を上書きできません。 プロジェクト所有者のみがUDFを使用して組み込み関数を上書きできます。 組み込み関数を上書きするUDFを使用すると、SQL文の実行後、ジョブのLogviewの [サマリー] に警告情報が表示されます。
構文
create function <function_name> as <'package_to_class'> using <'resource_list'>;
パラメーター
function_name: 必須です。 作成するUDFの名前。
package_to_class: 必須です。 UDFのクラス。 このパラメーターは大文字と小文字を区別し、単一引用符 (') で囲む必要があります。
Java UDFの場合、この名前を、最上位パッケージ名からUDFクラス名までの完全修飾クラス名として指定します。
Python UDFの場合、この名前をPythonスクリプトname.Class name形式で指定します。
説明Pythonスクリプト名は、リソースを一意に識別する基になるリソース名を指します。 MaxComputeのリソース名は大文字と小文字を区別しません。 たとえば、リソースを最初にアップロードしたときのリソース名はpyudf_test.pyです。 DataStudioでリソースの名前をPYUDF_TEST.pyに変更した場合、またはPYUDF_TEST.pyを使用してMaxComputeクライアントでpyudf_test.pyを上書きした場合、リソースを一意に識別する基になるリソース名はpyudf_test.pyのままです。 この場合、リソースに基づいてUDFを作成する場合、クラス名はpyudf_testS.ampleUDFでなければなりません。
list resources;
コマンドを実行して、すべてのリソースを一意に識別する基になるリソース名を表示できます。
resource_list: 必須です。 UDFによって使用されるリソースのリスト。
リソースリストには、UDFコードを含むリソースを含める必要があります。 リソースがMaxComputeにアップロードされていることを確認します。
コードが分散キャッシュAPIを呼び出してリソースファイルを読み取る場合、このリソースリストには、UDFによって読み取られるリソースファイルのリストも含まれている必要があります。
リソースリストは複数のリソース名で構成され、単一引用符 (') で囲む必要があります。 リソース名はコンマ (,) で区切ります。
リソースを含むプロジェクトを指定するには、
<project_name>/resources/<resource_name>
形式でパラメーターを記述します。
例
例1:
my_lower
関数を作成します。 この例では、Java UDFクラスorg.alidata.odps.udf.examples.Lower
はmy_lower.jarにあります。create function my_lower as 'org.alidata.odps.udf.examples.Lower' using 'my_lower.jar';
例2:
my_lower
関数を作成します。 この例では、Python UDFクラスMyLowerは、test_project
プロジェクトのpyudf_test.pyスクリプトにあります。create function my_lower as 'pyudf_test.MyLower' using 'test_project/resources/pyudf_test.py';
例3:
test_udtf
関数を作成します。 この例では、Java UDFクラスcom.aliyun.odps.examples.udf.UDTFResource
はudtfexample1.jarにあります。 この関数は、ファイルリソースfile_resource.txt、テーブルリソースtable_resource1、およびアーカイブリソース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';
UDFの削除
MaxComputeプロジェクトから既存のUDFを削除します。
構文
drop function <function_name>;
パラメーター
function_name: 必須です。 既存のUDFの名前。
例:
-- Delete the my_lower function. drop function my_lower;
UDFの表示
MaxComputeプロジェクト内の指定されたUDFの情報を表示します。 情報には、UDFの名前、所有者、作成時刻、クラス名、およびリソースリストが含まれます。
構文
desc function <function_name>;
パラメーター
function_name: 必須です。 既存の関数の名前。
戻り値
Name: UDFの名前。
Owner: UDFを所有するアカウント。
Created Time: UDFが作成された時刻。
Class: 大文字と小文字を区別するUDFのクラス。
Resources: UDFによって使用されるリソースのリスト。
例
-- View the information of the my_lower function. desc function my_lower;
次の応答が返されます。
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
UDFリストの表示
MaxComputeプロジェクト内のすべてのUDFを表示します。
構文次のいずれかの構文を使用して、MaxComputeプロジェクト内のすべてのUDFを表示できます。
list functions [-p <project_name>];
show functions;
パラメーター
project_name: オプションです。 MaxComputeプロジェクトの名前。
例
list functions;
次の応答が返されます。
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
すべての組み込み関数を表示
MaxComputeプロジェクトのすべての組み込み関数の情報を表示します。
構文
show builtin functions [<function_name>];
パラメーター
function_name: オプションです。 MaxComputeプロジェクトで指定された組み込み関数の名前。
例:
show builtin functions;
次の応答が返されます。
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) ......
show builtin functions;
コマンドは、V0.43.0以降のMaxComputeクライアントでのみ実行できます。