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

MaxCompute:例: テーブルリソースの参照

最終更新日:Jan 06, 2025

このトピックでは、MaxComputeクライアントでPythonのユーザー定義関数 (UDF) を使用してテーブルリソースを参照する方法について説明します。

前提条件

次の要件が満たされていることを確認してください。

  • MaxComputeクライアントがインストールされ、設定されます。

    MaxComputeクライアントのインストールと設定方法の詳細については、「MaxComputeクライアントのインストールと設定」をご参照ください。

  • 参照するテーブルは、リソースとしてMaxComputeプロジェクトに追加されます。

    次の例では、udf_testテーブルがリソースとしてMaxComputeプロジェクトに追加されます。 テーブルには次のデータが含まれています。

    +------------+------+
    | col1       | col2 |
    +------------+------+
    | 1          | a    |
    | 2          | b    |
    | 4          | c    |
    | 5          | d    |
    +------------+------+

    リソースの追加方法の詳細については、「リソースの追加」をご参照ください。

開発と使用手順

1. UDFを書く

次のサンプルコードは、Python UDFを使用してudf_testテーブルのデータをトラバースして配列を取得する方法を示しています。

from odps.udf import annotate
from odps.distcache import get_cache_table
@annotate('->string')
class DistCacheTableExample(object):
    def __init__(self):
        self.records = list(get_cache_table('udf_test'))
        self.counter = 0
        self.ln = len(self.records)
    def evaluate(self):
        if self.counter > self.ln - 1:
            return None
        ret = self.records[self.counter]
        self.counter += 1
        return str(ret)

上記のサンプルコードをPythonスクリプトとして保存し、MaxComputeクライアントのbinディレクトリにPythonスクリプトを保存します。 この例では、Pythonスクリプトの名前はtable.pyです。

2. リソースのアップロードとUDFの作成

UDFコードを開発およびデバッグした後、MaxComputeクライアントのMaxComputeにリソースをアップロードし、UDFを作成します。

  1. 次のコマンドを実行して、PythonスクリプトファイルをリソースとしてMaxComputeに追加します。

    add py table.py;

    次の応答が返されます。

    OK: Resource 'table.py' have been created.

    MaxComputeにリソースを追加するために使用できるコマンドの詳細については、「リソースの追加」をご参照ください。

  2. 次のコマンドを実行して、Python UDFを作成します。

    create function table_udf as 'table.DistCacheTableExample' using 'table.py,udf_test';

    パラメーターの説明:

    • table_udf: 作成するPython UDFの名前。 その後、関数はSQL文で呼び出されます。

    • table.DistCacheTableExample: tableはtable.pyスクリプトの名前です。 DistCacheTableExampleは、table.pyスクリプトで定義されたクラスです。

    次の応答が返されます。

    Success: Function 'table_udf' have been created.

    UDFの作成方法の詳細については、「UDFの作成」をご参照ください。

3. UDFを使用するUse the UDF

UDFの作成後、次のコマンドを実行してテストデータを作成し、UDFを呼び出します。

-- Create a test table. 
create table table_test (arg bigint);
-- Insert data into the table. 
insert into table_test values (1), (4), (15), (123), (7995);
-- Call the created function in the SQL statement. 
select table_udf() from table_test;

次の応答が返されます。

+-----+
| _c0 |
+-----+
| (4, 'c') |
| (5, 'd') |
| (1, 'a') |
| (2, 'b') |
| NULL |
+-----+

関連ドキュメント

Javaユーザー定義テーブル値関数 (UDTF) を使用してMaxComputeテーブルリソースを読み取る方法の例の詳細については、「Java UDTFを使用してMaxComputeからリソースを読み取る」をご参照ください。