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

MaxCompute:Python ユーザー定義関数の開発

最終更新日:Jun 21, 2026

MaxCompute Studio を使用して Python ユーザー定義関数 (UDF) を開発できます。このトピックでは、その開発、テスト、公開の方法について説明します。

前提条件

開始する前に、以下を完了してください。

Python ユーザー定義関数の開発

  1. [Project] ペインの [MaxCompute Studio] ディレクトリで、[scripts] を右クリックし、New > [MaxCompute Python] を選択します。
  2. [Create new MaxCompute python class] ダイアログボックスで、[Name] フィールドにクラス名を入力し、[Kind][Python UDF] に設定し、[OK] をクリックします。
  3. エディターで UDF コードを記述します。
    from odps.udf import annotate
    @annotate("bigint,bigint->bigint")
    class Hello(object):
        def evaluate(self, arg0, arg1):
            if None in (arg0,arg1):
                return None
            return arg0+arg1

UDF のテスト

UDF の開発後、コードをテストして、期待どおりに動作することを確認する必要があります。MaxCompute Studio はローカルテストをサポートしており、テーブルからサンプルデータをダウンロードして、UDF をローカルで実行およびデバッグできます。

  1. Python UDF スクリプトを右クリックし、[RUN] を選択します。
  2. [Edit configuration] ページで、必要なパラメーターを設定し、[OK] をクリックします。
    • MaxCompute project:UDF を実行する MaxCompute プロジェクトです。「プロジェクト接続の管理」ですでに MaxCompute プロジェクト接続を設定している場合、このフィールドは、デフォルトで接続されているプロジェクトに設定されます。プロンプトに従って他のプロジェクトを追加することもできます。
    • MaxCompute table:UDF の実行元となる MaxCompute テーブルです。選択した MaxCompute プロジェクトのテーブルのドロップダウンリストからテーブルを選択できます。
    • テーブル列:UDF が使用するソーステーブルの列です。
    • ダウンロードレコード数の制限:ダウンロードするレコードの最大数です。デフォルト:100。
    説明
    • データがすでにダウンロードされている場合、MaxCompute Studio は再度ダウンロードしません。データを再ダウンロードするには、MaxCompute クライアントで Tunnel コマンドを実行します。
    • デフォルトでは、100 レコードがダウンロードされます。より多くのデータでテストするには、MaxCompute クライアントの Tunnel コマンドまたは MaxCompute Studio のテーブルダウンロード機能を使用してデータをダウンロードしてください。
    • ダウンロードが完了すると、[warehouse] ディレクトリにあるテーブルの [data] ファイルでサンプルデータを確認できます。
  3. ローカル実行フレームワークは、[data] ファイルの指定された列からデータを取得し、UDF をローカルで実行します。
    説明 ローカル実行では、PyODPS の pyou スクリプトが使用されます。コマンドは pyou hello.Hello<data です。PyODPS のインストール後、コマンドを実行してスクリプトが存在することを確認できます。
    • Windows を使用している場合は、${python}/../Scripts/pyou コマンドを実行してください。
    • macOS を使用している場合は、${python}/../pyou コマンドを実行してください。
  4. 次の例は、Python ユーザー定義関数のソースコードです。コードを実行すると、コンソールで出力を確認できます。
    from odps.udf import annotate
    @annotate("bigint,bigint->bigint")
    class Hello(object):
        def evaluate(self, arg0, arg1):
            if None in (arg0,arg1):
                return None
            return arg0+arg1

Python ユーザー定義関数の公開

Python ユーザー定義関数がテストに合格したら、本番環境に公開できます。詳細については、「関数をアップロードして登録する」をご参照ください。