All Products
Search
Document Center

MaxCompute:Gunakan PyODPS di DataWorks

Last Updated:Jun 21, 2026

PyODPS, SDK Python untuk MaxCompute, memungkinkan Anda mengembangkan dan menjalankan task PyODPS di DataWorks. Topik ini menjelaskan batasan-batasan, menguraikan alur kerja utama, serta menyediakan contoh sederhana untuk memulai.

Batasan

  • Batasan penggunaan

    Jika Anda menerima error Got killed, proses tersebut dihentikan karena melebihi batas memori. Hindari mengunduh data dalam node PyODPS untuk diproses di DataWorks. Sebagai gantinya, kirimkan task pemrosesan data ke MaxCompute untuk eksekusi terdistribusi. Untuk perbandingan kedua metode tersebut, lihat Peringatan: Jangan mengunduh seluruh data secara lokal untuk menjalankan PyODPS.

  • Batasan dukungan paket

    • Node PyODPS di DataWorks tidak menyertakan beberapa paket, seperti matplotlib. Hal ini dapat membatasi fitur-fitur berikut:

      • Fungsi plot dari DataFrame.

      • user-defined function (UDF) DataFrame harus dikirimkan ke MaxCompute untuk dieksekusi. Sandbox Python hanya mendukung pustaka Python murni dan NumPy sebagai pustaka pihak ketiga, sehingga mencegah penggunaan langsung Pandas.

      • Pada kode yang dijalankan di DataWorks tanpa UDF, Anda dapat menggunakan paket NumPy dan Pandas yang telah dipra-instal. Paket pihak ketiga lain yang berisi kode biner tidak didukung.

    • Node PyODPS di DataWorks tidak mendukung paket Python atexit. Gunakan blok try-finally untuk mengimplementasikan fungsionalitas serupa.

  • Batas jumlah catatan data yang dapat dibaca

    Secara default, options.tunnel.use_instance_tunnel diatur ke False untuk node PyODPS di DataWorks, sehingga membatasi pembacaan maksimal hingga 10.000 catatan. Untuk membaca lebih banyak catatan, Anda harus mengaktifkan secara global instance tunnel dengan mengatur options.tunnel.use_instance_tunnel ke True.

Prosedur

  1. Buat node PyODPS.

    Buka halaman Data Development di DataWorks untuk membuat node PyODPS. Node PyODPS tersedia dalam dua jenis:

    • PyODPS 2, yang berbasis Python 2.

    • PyODPS 3, yang berbasis Python 3.

    Buat node PyODPS sesuai versi Python yang Anda gunakan. Untuk langkah-langkah detail, lihat Kembangkan task PyODPS 2 dan Kembangkan task PyODPS 3.

  2. Kembangkan kode untuk task PyODPS.

    Setelah membuat node, ikuti contoh pada bagian berikut untuk mempelajari kemampuan utama PyODPS.

    Untuk informasi lebih lanjut tentang cara menggunakan PyODPS, lihat Ikhtisar operasi dasar dan DataFrame (tidak direkomendasikan). Anda juga dapat mengikuti contoh dalam Gunakan node PyODPS untuk segmentasi kata bahasa Tionghoa Jieba untuk melakukan operasi end-to-end sederhana.

  3. Konfigurasikan properti penjadwalan, lalu simpan, komit, dan deploy node agar dapat berjalan secara berkala.

Titik masuk MaxCompute

Di node PyODPS, DataWorks menyediakan variabel global, odps atau o, sebagai titik masuk MaxCompute. Anda tidak perlu mendefinisikannya secara manual. Contohnya:

# Periksa apakah tabel pyodps_iris ada.
print(o.exist_table('pyodps_iris'))

Kode tersebut mengembalikan True, yang menunjukkan bahwa tabel pyodps_iris ada.

Catatan

Kredensial untuk objek titik masuk o hanya dapat mengakses MaxCompute, bukan layanan cloud lainnya. DataWorks hanya menyediakan kredensial ini selama eksekusi node PyODPS. Anda tidak dapat memperoleh kredensial tambahan dengan memanggil metode pada objek ini, seperti o.from_global.

Eksekusi SQL

Kemampuan umum

  • Anda dapat menjalankan perintah SQL di node PyODPS dengan menggunakan metode seperti execute_sql() atau run_sql(). Metode ini terutama mendukung pernyataan Data Definition Language (DDL) dan Data Manipulation Language (DML).

    Catatan

    Metode execute_sql() dan run_sql() tidak mendukung semua pernyataan SQL. Untuk pernyataan non-DDL atau non-DML, Anda harus menggunakan metode lain. Misalnya, gunakan metode run_security_query untuk menjalankan pernyataan GRANT atau REVOKE, dan gunakan metode run_xflow atau execute_xflow untuk menjalankan perintah API.

  • Untuk membaca hasil eksekusi SQL di node PyODPS, gunakan open_reader().

Untuk informasi lebih lanjut tentang operasi terkait SQL di node PyODPS, lihat SQL.

Peringatan: format data dan batas catatan

Karena alasan kompatibilitas historis, Instance Tunnel tidak diaktifkan secara default di DataWorks. Artinya, parameter instance.open_reader menggunakan antarmuka Result secara default. Antarmuka ini memiliki batas limit sebanyak 10.000 catatan dan mengalami kendala dalam mendukung tipe data kompleks. Jika Proyek Anda tidak memiliki mekanisme perlindungan data dan Anda perlu mengambil semua data secara iteratif atau membaca bidang dengan tipe data kompleks seperti Array, Anda perlu mengaktifkan Instance Tunnel dan menonaktifkan limit.

  • Menonaktifkan limit saat waktu proses

    Anda dapat menggunakan pernyataan berikut untuk mengaktifkan Instance Tunnel secara global dan menonaktifkan batasan limit.

    options.tunnel.use_instance_tunnel = True
    options.tunnel.limit_instance_tunnel = False  # Nonaktifkan limit untuk membaca semua data.
    with instance.open_reader() as reader:
        # Anda dapat membaca semua data melalui Instance Tunnel.
        # Anda dapat menggunakan reader.count untuk mendapatkan jumlah catatan.
  • Anda dapat menonaktifkan limit hanya untuk Reader saat ini.

    Anda juga dapat menambahkan tunnel=True ke open_reader untuk mengaktifkan instance tunnel hanya untuk pemanggilan open_reader saat ini. Selain itu, Anda dapat menambahkan limit=False untuk menonaktifkan batasan limit hanya untuk pemanggilan saat ini.

    with instance.open_reader(tunnel=True, limit=False) as reader:
        # Pemanggilan open_reader ini menggunakan antarmuka Instance Tunnel dan dapat membaca semua data.

Untuk informasi lebih lanjut tentang Instance Tunnel dan batas pembacaan data, lihat Baca hasil eksekusi SQL.

DataFrame

  • Eksekusi

    Di DataWorks, operasi DataFrame memerlukan pemanggilan eksplisit terhadap metode eksekusi langsung, seperti execute atau persist. Contohnya:

    # Panggil metode eksekusi langsung untuk memproses setiap catatan dan mencetak semua data dari tabel pyodps_iris di mana iris.sepalwidth kurang dari 3.
    from odps.df import DataFrame
    iris = DataFrame(o.get_table('pyodps_iris'))
    for record in iris[iris.sepalwidth < 3].execute():  
        print(record)
  • Output verbose

    Secara default, opsi options.verbose diaktifkan di DataWorks, sehingga mencetak informasi detail seperti URL Logview selama eksekusi node. Anda dapat mengonfigurasi opsi ini untuk mengontrol apakah detail tersebut ditampilkan.

Untuk contoh lebih lanjut tentang operasi DataFrame, lihat DataFrame (tidak direkomendasikan).

Parameter penjadwalan

Di node PyODPS, Anda dapat menggunakan parameter penjadwalan untuk memperoleh nilai seperti tanggal bisnis saat task dijalankan. Meskipun definisi dan penggunaan parameter penjadwalan konsisten dengan node SQL, cara mereferensikannya berbeda dalam kode.

  • Node SQL menggunakan string seperti ${param_name} secara langsung dalam kode.

  • Alih-alih melakukan penggantian string untuk ${param_name}, DataWorks menambahkan kamus global bernama args sebelum node dijalankan. Anda dapat memperoleh nilai parameter penjadwalan dengan mengakses kamus ini, misalnya args[param_name].

Sebagai contoh, jika Anda mengatur parameter penjadwalan ds=${yyyymmdd} di panel Basic properties > Parameters, Anda dapat mengambil parameter ini dalam kode sebagai berikut:

  • Dapatkan nilai parameter ds.

    print('ds=' + args['ds'])
    # Mengembalikan waktu ds, misalnya ds=20161116
  • Dapatkan data dari tabel dalam partisi bernama ds=${yyyymmdd}.

    o.get_table('table_name').get_partition('ds=' + args['ds'])
    # Dapatkan data dari partisi ds tabel table_name.

Untuk informasi lebih lanjut tentang parameter penjadwalan, lihat Konfigurasikan dan gunakan parameter penjadwalan.

Petunjuk parameter waktu proses

Untuk mengatur parameter waktu proses suatu task, gunakan parameter hints, yang merupakan dict.

o.execute_sql('select * from pyodps_iris', hints={'odps.sql.mapper.split.size': 16})

Anda juga dapat mengonfigurasi sql.settings secara global. Setelah dikonfigurasi, pengaturan ini akan otomatis ditambahkan ke setiap eksekusi.

from odps import options
options.sql.settings = {'odps.sql.mapper.split.size': 16}
o.execute_sql('select * from pyodps_iris')  # Petunjuk ditambahkan berdasarkan konfigurasi global.

Paket pihak ketiga

Node DataWorks telah dipra-instal dengan paket pihak ketiga berikut. Tabel berikut mencantumkan versi yang tersedia.

Nama paket

Versi Python 2

Versi Python 3

requests

2.11.1

2.26.0

numpy

1.16.6

1.18.1

pandas

0.24.2

1.0.5

scipy

0.19.0

1.3.0

scikit_learn

0.18.1

0.22.1

pyarrow

0.16.0

2.0.0

lz4

2.1.4

3.1.10

zstandard

0.14.1

0.17.0

Jika Anda memerlukan paket yang tidak dipra-instal, Anda dapat menggunakan metode load_resource_package untuk memuat paket pihak ketiga dari resource MaxCompute. Pertama, buat arsip paket dengan pyodps-pack, lalu gunakan load_resource_package untuk memuatnya sebelum mengimpor isinya. Untuk informasi lebih lanjut tentang cara menggunakan pyodps-pack, lihat Buat paket pihak ketiga untuk PyODPS dan Gunakan paket pihak ketiga di PyODPS.

Catatan

Saat membuat paket untuk node Python 2, tambahkan parameter --dwpy27 ke perintah pyodps-pack.

Contoh:

  1. Gunakan perintah berikut untuk memaketkan ipaddress.

    pyodps-pack -o ipaddress-bundle.tar.gz ipaddress
  2. Setelah mengunggah dan mengomiten ipaddress-bundle.tar.gz sebagai resource, Anda dapat menggunakan paket ipaddress di node PyODPS 3 sebagai berikut:

    load_resource_package("ipaddress-bundle.tar.gz")
    import ipaddress

DataWorks membatasi ukuran total paket yang diunduh hingga 100 MB. Untuk mengecualikan paket yang telah dipra-instal dari bundel Anda, gunakan parameter --exclude dari pyodps-pack. Sebagai contoh, perintah berikut mengecualikan paket numpy dan pandas yang telah dipra-instal.

pyodps-pack -o bundle.tar.gz --exclude numpy --exclude pandas <YOUR_PACKAGE>

Akun lain

Untuk mengakses MaxCompute dengan akun berbeda, gunakan metode as_account pada objek titik masuk MaxCompute. Ini akan membuat objek titik masuk baru untuk akun yang ditentukan, yang independen dari instans o default.

Penting

Metode as_account memerlukan PyODPS 0.11.3 atau yang lebih baru. Anda tidak dapat menggunakan metode ini jika lingkungan DataWorks Anda menjalankan versi sebelumnya.

Prosedur

  1. Berikan izin proyek yang diperlukan kepada pengguna lain. Untuk informasi lebih lanjut, lihat Lampiran: Berikan izin ke akun lain.

  2. Di node PyODPS, gunakan metode as_account untuk beralih akun dan membuat objek titik masuk baru.

    import os
    # Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID diatur ke ID AccessKey Anda,
    # dan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET diatur ke Secret AccessKey Anda.
    # Kami menyarankan agar Anda tidak menggunakan string ID AccessKey dan Secret AccessKey secara langsung.
    new_odps = o.as_account(
        os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
        os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET')
    )
  3. Periksa apakah akun telah beralih.

    Kueri informasi pengguna saat ini dengan menambahkan pernyataan berikut ke kode Anda. Jika output menunjukkan UID pengguna lain, berarti Anda berhasil mengakses MaxCompute dengan akun tersebut.

    print(new_odps.get_project().current_user)
    Catatan

    new_odps merepresentasikan objek titik masuk untuk akun baru.

Contoh

  1. Buat tabel dan impor data.

    1. Unduh dataset Iris iris.data dan ubah namanya menjadi iris.csv.

    2. Buat tabel bernama pyodps_iris dan unggah dataset iris.csv. Untuk instruksi, lihat Buat tabel dan unggah data.

      Berikut adalah pernyataan pembuatan tabel.

      CREATE TABLE if not exists pyodps_iris
      (
      sepallength  DOUBLE comment 'sepal length (cm)',
      sepalwidth   DOUBLE comment 'sepal width (cm)',
      petallength  DOUBLE comment 'petal length (cm)',
      petalwidth   DOUBLE comment 'petal width (cm)',
      name         STRING comment 'species'
      );
  2. Buat node ODPS SQL untuk memberikan izin yang diperlukan. Untuk informasi lebih lanjut, lihat Lampiran: Berikan izin ke akun lain.

  3. Buat node PyODPS untuk beralih akun. Berikut contoh kodenya. Untuk informasi selengkapnya, lihat Mengembangkan Tugas PyODPS 3.

    from odps import ODPS
    import os
    import sys
    # Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID diatur ke ID AccessKey pengguna,
    # dan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET diatur ke Secret AccessKey pengguna.
    # Kami menyarankan agar Anda tidak menggunakan string ID AccessKey dan Secret AccessKey secara langsung.
    os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'] = '<AccessKey ID>'
    os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] = '<AccessKey Secret>'
    od = o.as_account(os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), 
             os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET')
            )
    iris = DataFrame(od.get_table('pyodps_iris'))
    # Cetak output menggunakan pernyataan kondisional.
    with od.execute_sql('select * from pyodps_iris WHERE sepallength > 5 ').open_reader() as reader4:
        print(reader4.raw)
        for record in reader4:
            print(record["sepallength"],record["sepalwidth"],record["petallength"],record["petalwidth"],record["name"])
    # Cetak UID pengguna saat ini.
    print(od.get_project().current_user)
  4. Jalankan kode dan lihat hasilnya.

    Executing user script with PyODPS 0.11.4.post0
    "sepallength","sepalwidth","petallength","petalwidth","name"
    5.4,3.9,1.7,0.4,"Iris-setosa"
    5.4,3.7,1.5,0.2,"Iris-setosa"
    5.8,4.0,1.2,0.2,"Iris-setosa"
    5.7,4.4,1.5,0.4,"Iris-setosa"
    5.4,3.9,1.3,0.4,"Iris-setosa"
    5.1,3.5,1.4,0.3,"Iris-setosa"
    5.7,3.8,1.7,0.3,"Iris-setosa"
    5.1,3.8,1.5,0.3,"Iris-setosa"
    5.4,3.4,1.7,0.2,"Iris-setosa"
    5.1,3.7,1.5,0.4,"Iris-setosa"
    5.1,3.3,1.7,0.5,"Iris-setosa"
    5.2,3.5,1.5,0.2,"Iris-setosa"
    5.2,3.4,1.4,0.2,"Iris-setosa"
    5.4,3.4,1.5,0.4,"Iris-setosa"
    5.2,4.1,1.5,0.1,"Iris-setosa"
    5.5,4.2,1.4,0.2,"Iris-setosa"
    5.5,3.5,1.3,0.2,"Iris-setosa"
    5.1,3.4,1.5,0.2,"Iris-setosa"
    5.1,3.8,1.9,0.4,"Iris-setosa"
    5.1,3.8,1.6,0.2,"Iris-setosa"
    5.3,3.7,1.5,0.2,"Iris-setosa"
    7.0,3.2,4.7,1.4,"Iris-versicolor"
    6.4,3.2,4.5,1.5,"Iris-versicolor"
    6.9,3.1,4.9,1.5,"Iris-versicolor"
    5.5,2.3,4.0,1.3,"Iris-versicolor"
    6.5,2.8,4.6,1.5,"Iris-versicolor"
    5.7,2.8,4.5,1.3,"Iris-versicolor"
    6.3,3.3,4.7,1.6,"Iris-versicolor"
    6.6,2.9,4.6,1.3,"Iris-versicolor"
    5.2,2.7,3.9,1.4,"Iris-versicolor"
    5.9,3.0,4.2,1.5,"Iris-versicolor"
    6.0,2.2,4.0,1.0,"Iris-versicolor"
    6.1,2.9,4.7,1.4,"Iris-versicolor"
    5.6,2.9,3.6,1.3,"Iris-versicolor"
    6.7,3.1,4.4,1.4,"Iris-versicolor"
    5.6,3.0,4.5,1.5,"Iris-versicolor"
    5.8,2.7,4.1,1.0,"Iris-versicolor"
    6.2,2.2,4.5,1.5,"Iris-versicolor"
    5.6,2.5,3.9,1.1,"Iris-versicolor"
    5.9,3.2,4.8,1.8,"Iris-versicolor"
    6.1,2.8,4.0,1.3,"Iris-versicolor"
    6.3,2.5,4.9,1.5,"Iris-versicolor"
    6.1,2.8,4.7,1.2,"Iris-versicolor"
    6.4,2.9,4.3,1.3,"Iris-versicolor"
    6.6,3.0,4.4,1.4,"Iris-versicolor"
    6.8,2.8,4.8,1.4,"Iris-versicolor"
    6.7,3.0,5.0,1.7,"Iris-versicolor"
    6.0,2.9,4.5,1.5,"Iris-versicolor"
    5.7,2.6,3.5,1.0,"Iris-versicolor"
    5.5,2.4,3.8,1.1,"Iris-versicolor"
    5.5,2.4,3.7,1.0,"Iris-versicolor"
    5.8,2.7,3.9,1.2,"Iris-versicolor"
    6.0,2.7,5.1,1.6,"Iris-versicolor"
    5.4,3.0,4.5,1.5,"Iris-versicolor"
    6.0,3.4,4.5,1.6,"Iris-versicolor"
    6.7,3.1,4.7,1.5,"Iris-versicolor"
    6.3,2.3,4.4,1.3,"Iris-versicolor"
    5.6,3.0,4.1,1.3,"Iris-versicolor"
    5.5,2.5,4.0,1.3,"Iris-versicolor"
    5.5,2.6,4.4,1.2,"Iris-versicolor"
    6.1,3.0,4.6,1.4,"Iris-versicolor"
    5.8,2.6,4.0,1.2,"Iris-versicolor"
    5.6,2.7,4.2,1.3,"Iris-versicolor"
    5.7,3.0,4.2,1.2,"Iris-versicolor"
    5.7,2.9,4.2,1.3,"Iris-versicolor"
    6.2,2.9,4.3,1.3,"Iris-versicolor"
    5.1,2.5,3.0,1.1,"Iris-versicolor"
    5.7,2.8,4.1,1.3,"Iris-versicolor"
    6.3,3.3,6.0,2.5,"Iris-virginica"
    5.8,2.7,5.1,1.9,"Iris-virginica"
    7.1,3.0,5.9,2.1,"Iris-virginica"
    6.3,2.9,5.6,1.8,"Iris-virginica"
    6.5,3.0,5.8,2.2,"Iris-virginica"
    7.6,3.0,6.6,2.1,"Iris-virginica"
    7.3,2.9,6.3,1.8,"Iris-virginica"
    6.7,2.5,5.8,1.8,"Iris-virginica"
    7.2,3.6,6.1,2.5,"Iris-virginica"
    6.5,3.2,5.1,2.0,"Iris-virginica"
    6.4,2.7,5.3,1.9,"Iris-virginica"
    6.8,3.0,5.5,2.1,"Iris-virginica"
    5.7,2.5,5.0,2.0,"Iris-virginica"
    5.8,2.8,5.1,2.4,"Iris-virginica"
    6.4,3.2,5.3,2.3,"Iris-virginica"
    6.5,3.0,5.5,1.8,"Iris-virginica"
    7.7,3.8,6.7,2.2,"Iris-virginica"
    7.7,2.6,6.9,2.3,"Iris-virginica"
    6.0,2.2,5.0,1.5,"Iris-virginica"
    6.9,3.2,5.7,2.3,"Iris-virginica"
    5.6,2.8,4.9,2.0,"Iris-virginica"
    7.7,2.8,6.7,2.0,"Iris-virginica"
    6.3,2.7,4.9,1.8,"Iris-virginica"
    6.7,3.3,5.7,2.1,"Iris-virginica"
    7.2,3.2,6.0,1.8,"Iris-virginica"
    6.2,2.8,4.8,1.8,"Iris-virginica"
    6.1,3.0,4.9,1.8,"Iris-virginica"
    6.4,2.8,5.6,2.1,"Iris-virginica"
    7.2,3.0,5.8,1.6,"Iris-virginica"
    7.4,2.8,6.1,1.9,"Iris-virginica"
    7.9,3.8,6.4,2.0,"Iris-virginica"
    6.4,2.8,5.6,2.2,"Iris-virginica"
    6.3,2.8,5.1,1.5,"Iris-virginica"
    6.1,2.6,5.6,1.4,"Iris-virginica"
    7.7,3.0,6.1,2.3,"Iris-virginica"
    6.3,3.4,5.6,2.4,"Iris-virginica"
    6.4,3.1,5.5,1.8,"Iris-virginica"
    6.0,3.0,4.8,1.8,"Iris-virginica"
    6.9,3.1,5.4,2.1,"Iris-virginica"
    6.7,3.1,5.6,2.4,"Iris-virginica"
    6.9,3.1,5.1,2.3,"Iris-virginica"
    5.8,2.7,5.1,1.9,"Iris-virginica"
    6.8,3.2,5.9,2.3,"Iris-virginica"
    6.7,3.3,5.7,2.5,"Iris-virginica"
    6.7,3.0,5.2,2.3,"Iris-virginica"
    6.3,2.5,5.0,1.9,"Iris-virginica"
    6.5,3.0,5.2,2.0,"Iris-virginica"
    6.2,3.4,5.4,2.3,"Iris-virginica"
    5.9,3.0,5.1,1.8,"Iris-virginica"
    <User 139xxxxxxxxxxxxx>

Pemecahan masalah

Jika kode Anda tidak merespons selama eksekusi dan tidak menghasilkan output, Anda dapat menambahkan komentar berikut di awal kode Anda. DataWorks kemudian akan mencetak jejak stack semua thread setiap 30 detik.

# -*- dump_traceback: true -*-
Catatan

Metode ini berlaku untuk node PyODPS 3, versi 0.11.4.1 atau yang lebih baru.

Versi PyODPS

Anda dapat memeriksa versi PyODPS saat ini dengan menjalankan kode Python atau dengan melihat log waktu proses task PyODPS apa pun.

  • Jalankan kode berikut di node PyODPS:

    # Masukkan kode berikut:
    import odps; print(odps.__version__)
    # Contoh hasil
    0.11.2.3
  • Periksa log waktu proses task PyODPS. Versi ditampilkan dalam output log, seperti pada contoh berikut:

    2023-07-26 15:39:53  INFO SKYNET_DAGTYPE=100:
    2023-07-26 15:39:53  INFO SKYNET_SYSTEM_ENV=dev:
    2023-07-26 15:39:53  INFO SKYNET_GMTDATE=20230726:
    2023-07-26 15:39:53  INFO SKYNET_BIZDATE=20230726:
    2023-07-26 15:39:53  INFO SKYNET_ENVTYPE=1:
    2023-07-26 15:39:53  INFO SKYNET_PROJECTID=342277:
    2023-07-26 15:39:53  INFO SKYNET_BUSINESS_ID=10756717:
    2023-07-26 15:39:53  INFO SKYNET_ARGS_ENABLE=true:
    2023-07-26 15:39:53  INFO SKYNET_ACCOUNT_ID=xxx
    2023-07-26 15:39:53  INFO TASK_SOURCE=dataworks_datastudio:
    2023-07-26 15:39:53  INFO SKYNET_REGION=xxx:
    2023-07-26 15:39:53  INFO LINK_FILE_ID=503440413:
    2023-07-26 15:39:53  INFO TASK_PLUGIN_NAME=pyodps:
    2023-07-26 15:39:53  INFO ALISA_UNIQUEKEY=xxx
    2023-07-26 15:39:53  INFO ALISA_TASK_ID=T3_xxx
    2023-07-26 15:39:53  INFO ALISA_TASK_EXEC_TARGET=group_599314507759873_dev:
    2023-07-26 15:39:53  INFO ALISA_TASK_PRIORITY=0:
    2023-07-26 15:39:53  INFO --- Invoking Shell command line now ---
    2023-07-26 15:39:53  INFO ============================================================
    Executing user script with PyODPS 0.11.4.post0
    "sepallength","sepalwidth","petallength","petalwidth","name"
    5.4,3.9,1.7,0.4,"Iris-setosa"
    5.4,3.7,1.5,0.2,"Iris-setosa"
    5.8,4.0,1.2,0.2,"Iris-setosa"

Lampiran: Berikan izin pengguna

Untuk mengizinkan pengguna Alibaba Cloud lain (bukan Pengguna RAM) mengakses proyek dan tabel di ruang kerja DataWorks Anda, Anda harus membuat node ODPS SQL dan menjalankan perintah otorisasi berikut. Untuk informasi lebih lanjut tentang cara membuat node ODPS SQL, lihat Buat node ODPS SQL. Untuk informasi lebih lanjut tentang izin, lihat Pengguna dan izin.

-- Tambahkan pengguna akun Alibaba Cloud lain di tingkat proyek.
add user ALIYUN$<account_name>;
-- Berikan izin CreateInstance pada proyek.
grant CreateInstance on project <project_name> to USER ALIYUN$<account_name>;
-- Berikan izin Describe dan Select pada tabel.
grant Describe, Select on table <table_name> to USER ALIYUN$<account_name>;
-- Lihat hasil otorisasi.
show grants for ALIYUN$<account_name>;

Berikut adalah contoh hasil otorisasi dari menjalankan show grants for ALIYUN$<account_name>;:

Authorization Type: ACL
[user/ALIYUN$:xxx.com]
A    projects/mc_xxx : CreateInstance
A    projects/mc_xxx/tables/pyodps_xxx : Describe | Select

Lampiran: Data contoh

Untuk mengikuti contoh dalam topik ini, pertama-tama buat tabel pyodps_iris dan isi dengan data dengan mengikuti instruksi dalam Langkah 1: Buat tabel dan impor data. Tabel ini digunakan untuk mendemonstrasikan operasi dasar.

Topik terkait

Gunakan fitur Operating history untuk melihat riwayat semua tugas yang dijalankan di DataStudio dalam tiga hari terakhir. Dari tampilan ini, Anda dapat menghentikan tugas yang sedang berjalan dan menyimpan pernyataan SQL dari catatan tugas sebagai file sementara. Untuk informasi selengkapnya, lihat Operating history.