MaxComputeは、ほとんどのビジネスシナリオでデータ処理要件を満たすために、多数の組み込み関数を提供します。 このトピックでは、MaxComputeが提供する組み込み関数の種類について説明します。 このトピックでは、組み込み関数の使用方法についても説明します。
背景情報
次の表に、MaxComputeが提供する組み込み関数の種類を示します。
タイプ | 説明 |
date、DATETIME、TIMESTAMPなどの日付タイプのデータを処理するために使用されます。 たとえば、これらの関数を使用して、日付値の加算と減算、日付値の差の計算、日付フィールドの抽出、現在時刻の取得、および日付形式の変換を行うことができます。 | |
BIGINT、DOUBLE、DECIMAL、FLOATなどの数値型のデータを処理するために使用されます。 たとえば、これらの関数を使用して、数値システムの変換、数学演算の実行、値の丸め、および乱数の取得を行うことができます。 | |
ウィンドウ内の列のデータを処理するために使用します。 たとえば、これらの関数を使用して、列データの合計、最大値、最小値、平均値、中央値の計算、列データの並べ替え、特定のオフセットでの列のデータの取得、列データのサンプリングを行うことができます。 | |
複数の入力レコードを1つの出力値に集約するために使用します。 たとえば、これらの関数を使用して、データの合計、最大値、最小値、平均値、集計パラメーター、および文字列の連結を計算できます。 | |
STRING型のデータを処理するために使用されます。 たとえば、これらの関数を使用して、文字列の切り捨て、文字列の置き換え、文字列の検索、大文字と小文字の変換、文字列形式の変換を行うことができます。 | |
MAP、ARRAY、STRUCT、またはJSON型のデータを処理するために使用されます。 たとえば、これらの関数を使用して、要素の重複排除、集計、ソート、およびマージを行うことができます。 JSON関数の制限の詳細については、「JSON関数の制限」をご参照ください。 | |
STRING型およびBINARY型のテーブルデータを処理するために使用します。 たとえば、これらの関数を使用してデータを暗号化および復号できます。 | |
他のビジネスシナリオでデータを処理するために使用されます。 |
MaxComputeの組み込み関数とオープンソースシステムの組み込み関数間のマッピングの詳細については、「MaxComputeの組み込み関数とHive、MySQL、およびOracleの組み込み関数間のマッピング」をご参照ください。
注意事項
MaxComputeが提供する組み込み関数を使用する場合は、次の項目に注意してください。
組み込み関数の場合、入力パラメーターの型と数、および関数形式は関数構文要件を満たす必要があります。 関数の構文要件が満たされていない場合、MaxComputeは組み込み関数を解析できず、組み込み関数が呼び出されるSQL文を実行するときにエラーが発生する可能性があります。
組み込み関数の入力パラメーターがMaxCompute V2.0データ型エディションでサポートされている型の場合、MaxCompute V2.0データ型エディションを有効にする必要があります。 MaxCompute V2.0データ型エディションでサポートされているデータ型には、TINYINT、SMALLINT、INT、FLOAT、VARCHAR、TIMESTAMP、およびBINARYがあります。 MaxCompute V2.0データ型エディションを有効にしない場合、組み込み関数が呼び出されるSQL文を実行するときにエラーが発生する可能性があります。 MaxCompute V2.0データ型エディションは、セッションまたはプロジェクトレベルで有効にできます。
セッションレベル: 組み込み関数が呼び出されるsql文の前に、
set odps. SQL. type.system.odps2=true;
を追加します。 次に、それらを一緒にコミットして実行します。 この設定は、現在のSQL文に対してのみ有効です。プロジェクトレベル: プロジェクトの所有者は、プロジェクトの要件に基づいて、プロジェクトのMaxCompute V2.0データ型エディションを有効にできます。 設定は10〜15分後に有効になります。 この設定は、後続のすべてのSQL文に対して有効です。
setproject odps.sql.type.system.odps2=true;
プロジェクトのMaxCompute V2.0データ型エディションを有効にすると、STRINGからBIGINT、STRINGからDATETIME、DOUBLEからBIGINT、DECIMALからDOUBLE、DECIMALからBIGINTなど、一部の暗黙の変換が無効になります。 これは、精度の損失またはエラーを引き起こす可能性がある。 この場合、CAST関数を使用してデータ型を強制的に変換し、これらの問題を解決できます。 MaxCompute V2.0データ型エディションを無効にすることもできます。
UDFの名前が組み込み関数の名前と同じ場合、UDFが優先的に呼び出されます。 たとえば、UDF CONCATと組み込み関数CONCATの両方がMaxComputeに存在する場合、システムは組み込み関数CONCATの代わりにUDF CONCATを自動的に呼び出します。 組み込み関数を呼び出す場合は、組み込み関数の前に
::
という記号を追加する必要があります。 たとえば、select ::concat('ab', 'c');
を使用できます。MaxComputeプロジェクトのグローバルプロパティの設定が異なる場合、組み込み関数の実行結果が異なる場合があります。
setproject;
コマンドを実行して、MaxComputeプロジェクトのグローバルプロパティを設定できます。
JSON関数の制限
サポートされている開発ツールには、MaxComputeクライアント (odpscmd) 、MaxCompute Studio、およびDataWorksが含まれます。 Dataphinなどの外部エコシステムはサポートされていません。 外部エコシステムでMaxComputeがサポートするJSONデータ型を使用する必要がある場合は、外部エコシステムがJSONデータ型をサポートしているかどうかを確認する必要があります。 次の表に、JSON型のデータの開発ツールとしてMaxComputeクライアント (odpscmd) またはMaxCompute Studioを使用する場合に注意する必要がある項目を示します。
MaxComputeクライアント (odpscmd)
MaxCompute Studio
MaxComputeクライアントをV0.46.5以降にアップグレードする必要があります。 それ以外の場合、
desc json_table
ステートメントを実行したり、Tunnelを使用してJSON型のデータをダウンロードしたりすることはできません。use_instance_tunnel
パラメーターをfalseに設定する必要があります。 このパラメーターは、クライアントのインストールパスのconfフォルダーにあるodps_config.iniファイルに含まれています。 それ以外の場合、クエリを実行するとエラーが報告されます.
MaxCompute Studioを使用すると、JSONデータをクエリできます。 MaxCompute Studioでは、JSONデータをアップロードまたはダウンロードすることはできません。
Hologresなどの別のエンジンを使用してMaxComputeテーブルからデータを読み取る場合、テーブル内のJSONデータを読み取ることはできません。
JSON型の列をMaxComputeテーブルに追加することはできません。
JSON型のデータを他の型のデータと比較したり、JSON型のデータに対して
ORDER BY
句またはGROUP BY
句を含むSQL文を実行したり、JSON型の列を結合
キーとして使用したりすることはできません。JSON NUMBER型のデータの場合、整数部はBIGINT型を使用して格納され、小数部はDOUBLE型を使用して格納されます。 整数部分がBIGINTタイプでサポートされている範囲を超えると、整数オーバーフローが発生します。 小数部をDOUBLE型に変換すると精度ロスが発生します。
JSONデータの生成に使用される文字列には、Unicodeのnull文字である
\u0000
を含めることはできません。Java UDFおよびPython UDFは、JSONデータ型をサポートしていません。
クラスタテーブルはJSONデータを格納できません。
V0.44.0より前のバージョンのJava用SDKおよびV0.11.4.1より前のバージョンのPyODPSはJSONデータ型をサポートしていません
デルタテーブルはJSONデータ型をサポートしていません。
文字列関数の制限
次の関数は英語の文字のみをサポートします。
TRIM、RTRIM、およびLTRIM: trimCharsパラメーターの値には、英字のみを使用できます。
REVERSE: この関数は、Hive互換データ型エディションの英字のみをサポートします。
SOUNDEX: この関数は英語の文字のみをサポートします。
TOLOWER: この関数は、文字列内の英語を小文字に変換するために使用されます。
TOUPPER: この関数は、文字列内の英字を大文字に変換するために使用されます。
INITCAP: この関数は、文字列の英語の各単語の最初の文字を大文字に、各単語の他の文字を小文字に変換するために使用されます。