すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:概要

最終更新日:Dec 13, 2024

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: この関数は、文字列の英語の各単語の最初の文字を大文字に、各単語の他の文字を小文字に変換するために使用されます。