Tüm Ürünler
Search
Belge Merkezi

MaxCompute:Örnek: Tablo kaynağına başvurma

Son Güncelleme:Oct 04, 2026

Sorgu sırasında bir MaxCompute tablo kaynağından veri okumak için Python kullanıcı tanımlı işlevi (UDF) kullanın. Bu konu; UDF'yi yazma, kaynakları yükleme, işlevi kaydetme ve SQL içinde çağırma adımlarını içeren tam iş akışını adım adım açıklar.

Önkoşullar

Başlamadan önce aşağıdaki koşulları karşıladığınızdan emin olun:

Bu konuda örnek olarak udf_test tablosu kayıtlı tablo kaynağı olarak kullanılır. Tablo aşağıdaki verileri içerir:

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

Çalışma mantığı

get_cache_table() yöntemi, UDF sınıfı başlatıldığında tablo verilerini belleğe bir kez yükler. Sonraki her evaluate() çağrısı bu bellek içi anlık görüntüsünden okuma yapar; tablo her satır için yeniden okunmaz. Bu nedenle yükleme çağrısı __init__ içinde yer almalı, evaluate() içinde olmamalıdır.

Adım 1: UDF'yi yazma

Aşağıdaki Python UDF'si, başlatma sırasında udf_test içindeki tüm satırları belleğe yükler ve ardından her evaluate() çağrısında bir satır döndürür.

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)

Bu dosyayı MaxCompute istemcisinin bin dizininde table.py adıyla kaydedin.

Adım 2: Kaynakları yükleme ve UDF'yi kaydetme

Python betiğini yükleme

table.py dosyasını kaynak olarak eklemek için aşağıdaki komutu çalıştırın:

add py table.py;

Beklenen çıktı:

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

Kaynak komutlarının tam listesi için bkz. Kaynak ekleme.

UDF'yi kaydetme

UDF'yi oluşturmak için aşağıdaki komutu çalıştırın:

create function table_udf as 'table.DistCacheTableExample' using 'table.py,udf_test';
Parametre Açıklama
table_udf UDF'nin adı. SQL deyimlerinde çağırdığınız ad budur.
table.DistCacheTableExample table betik dosyasının temel adıdır (table.py). DistCacheTableExample ise bu betikte tanımlanan sınıftır.

Beklenen çıktı:

Success: Function 'table_udf' have been created.

UDF kaydı hakkında daha fazla ayrıntı için bkz. UDF oluşturma.

Adım 3: UDF'yi çağırma

Bir test tablosu oluşturun, veri ekleyin ve UDF'yi çağırın:

-- Create a test table
CREATE TABLE table_test (arg bigint);

-- Insert test data
INSERT INTO table_test VALUES (1), (4), (15), (123), (7995);

-- Call the UDF
SELECT table_udf() FROM table_test;

UDF, table_test içindeki her satır için bir kez çağrılır. table_test 5 satıra sahipken udf_test yalnızca 4 satır içerdiğinden beşinci çağrı NULL döndürür.

Beklenen çıktı:

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

Sırada ne var

Java kullanıcı tanımlı tablo değerli işlevi (UDTF) kullanarak MaxCompute tablo kaynaklarını okumak için bkz. Java UDTF kullanarak MaxCompute'dan kaynak okuma.