日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

UDF示例:引用表資源

本文以在MaxCompute客戶端操作為例,為您介紹如何通過Python UDF引用表資源。

前提條件

請確認您已完成如下操作:

  • 已安裝并配置MaxCompute客戶端。

    更多安裝并配置MaxCompute客戶端信息,請參見安裝并配置MaxCompute客戶端

  • 已將待引用的表添加為MaxCompute項目中的資源。

    本文已添加的表資源示例為udf_test,包含的數據如下。

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

    更多添加資源操作,請參見添加資源

開發和使用步驟

1. 開發代碼

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)

將上述代碼示例保存為PY腳本文件(例如table.py),并放置在MaxCompute客戶端的bin目錄中。

2. 上傳資源和注冊函數

完成UDF代碼開發和調試之后,在MaxCompute客戶端中將資源上傳至MaxCompute并注冊函數。

  1. 執行如下命令,將PY腳本文件上傳為MaxCompute資源。

    add py table.py;

    返回結果如下。

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

    更多添加資源命令信息,請參見添加資源

  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.

    更多注冊函數信息,請參見注冊函數

3. 使用示例

成功注冊UDF后,執行以下命令,構造測試數據并調用注冊的函數。

--創建測試表。
create table table_test (arg bigint);
--插入數據。
insert into table_test values (1), (4), (15), (123), (7995);
--在SQL語句中調用新注冊的函數。
select table_udf() from table_test;

返回結果如下。

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

相關文檔

基于Java語言實現的讀取MaxCompute表資源的示例請參見Java UDTF讀取MaxCompute資源示例