本文以在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并注冊函數。
執行如下命令,將PY腳本文件上傳為MaxCompute資源。
執行如下命令,注冊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資源示例。
文檔內容是否對您有幫助?