全部产品
Search
文档中心

:Pertanyaan Umum Lainnya tentang SQL

更新时间:Jul 02, 2025

Topik ini menjawab beberapa pertanyaan umum terkait pernyataan SQL di MaxCompute, seperti tipe data dan batasan pada SQL.

KategoriPertanyaan Umum
Tipe Data
Batasan pada SQL
Operasi untuk menjalankan pekerjaan SQL
Operasi untuk melihat pekerjaan SQL
Operasi untuk menyetel pekerjaan SQLBagaimana cara meningkatkan efisiensi operasi pekerjaan ketika pekerjaan SQL berjalan lambat?

Apakah MaxCompute mendukung bidang waktu yang nilainya tidak mencakup bagian jam, menit, dan detik?

Ya, MaxCompute mendukung bidang waktu tanpa bagian jam, menit, dan detik melalui tipe data DATE. Untuk menggunakan tipe data DATE, aktifkan edisi tipe data MaxCompute V2.0. Informasi lebih lanjut tentang edisi ini dapat ditemukan di Edisi tipe data MaxCompute V2.0.

Mengapa hasil perbandingan setara antara nilai tipe DOUBLE selama eksekusi pernyataan SQL MaxCompute gagal memenuhi harapan?

Nilai tipe DOUBLE di MaxCompute memiliki presisi yang berbeda. Oleh karena itu, hindari penggunaan tanda sama dengan (=) untuk membandingkan dua nilai tipe DOUBLE.

Untuk mengatasi masalah ini, kurangi kedua nilai tipe DOUBLE dan ambil nilai absolutnya. Jika nilai absolut sangat kecil, kedua nilai tersebut dianggap sama.

Bagaimana cara mengatasi masalah kelebihan presisi nilai tipe data DECIMAL?

Jalankan perintah set odps.sql.decimal.odps2=true; pada tingkat sesi untuk mengaktifkan edisi tipe data MaxCompute V2.0. Panjang maksimum yang didukung oleh MaxCompute untuk tipe data DECIMAL adalah 38 bit. Namun, jika data disimpan berdasarkan panjang maksimum selama pemrosesan bisnis, kelebihan data mungkin terjadi. Untuk menghindarinya, kurangi panjang maksimum tipe data DECIMAL.

Apa yang harus saya lakukan jika proyek MaxCompute yang baru dibuat tidak mendukung konversi implisit antar tipe data?

Untuk mendukung konversi tipe data implisit, nonaktifkan edisi tipe data MaxCompute V2.0. Informasi lebih lanjut tentang konversi tipe data dapat ditemukan di Konversi tipe.

Apa yang harus saya lakukan jika pesan kesalahan "XXXtypeisnotenabled incurrentmode" muncul saat saya menanyakan data?

Jalankan perintah set odps.sql.decimal.odps2=true; pada tingkat sesi untuk mengaktifkan edisi tipe data MaxCompute V2.0.

Apa yang harus saya lakukan jika ukuran suatu bidang melebihi 8 MB?

Ukuran bidang tunggal dalam tabel MaxCompute tidak boleh melebihi 8 MB karena batas penyimpanan. Jika ukuran bidang lebih besar dari 8 MB, bagi bidang menjadi beberapa bidang. Rancang logika pemisahan spesifik berdasarkan karakteristik bisnis Anda untuk memastikan bahwa ukuran setiap bidang tidak melebihi 8 MB.

Bidang besar dengan struktur kompleks secara signifikan mempengaruhi kinerja komputasi selama pengembangan dan analisis data. Kami merekomendasikan merancang arsitektur data berdasarkan spesifikasi gudang data berikut untuk menghindari bidang besar:
  • Saat mengarsipkan data mentah dengan struktur kompleks di lapisan penyimpanan data operasional (ODS), kompres data tersebut.
  • Lakukan pembersihan data tambahan di lapisan ODS secara berkala, seperti setiap hari. Pisahkan bidang kompleks menjadi beberapa bidang sederhana dan simpan di tabel di lapisan model data umum (CDM) untuk kemudahan pengumpulan dan analisis data.

Apa yang harus saya lakukan jika pesan kesalahan "partitions exceeds the specified limit" muncul saat saya menjalankan pernyataan SQL MaxCompute?

  • Deskripsi Masalah

    Saat menjalankan pernyataan SQL MaxCompute, pesan kesalahan berikut muncul:

    FAILED: ODPS-0010000:System internal error - OTS filtering exception - Ots read range partitions exceeds the specified limit:10000:  tableName:xxxx , please check hive conf key
  • Penyebab
    Tabel MaxCompute dapat berisi hingga 60.000 partisi, tetapi hanya 10.000 partisi yang dapat ditanyakan pada saat yang sama. Penyebab umum:
    • Penyebab 1: Tidak ada kondisi partisi yang ditentukan.
    • Penyebab 2: Bidang serupa dengan ID pengguna digunakan sebagai bidang partisi, sehingga menghasilkan partisi berlebihan.
  • Solusi
    • Solusi untuk Penyebab 1: Tentukan kondisi partisi.
    • Solusi untuk Penyebab 2: Ubah bidang partisi.

Bagaimana cara menjalankan SQL MaxCompute dalam mode non-interaktif?

Dalam sistem operasi, jalankan SQL MaxCompute dalam mode non-interaktif menggunakan perintah shell.
  • Gunakan odps -f filename untuk membaca dan memproses file SQL.
    Baris pertama file yang ditentukan oleh parameter namafile adalah SQL, yang menunjukkan bahwa mode SQL diaktifkan. Contoh pernyataan:
    SQL
    
      select ... from table_name where xxx;                
  • Jika hanya menjalankan satu pernyataan SQL, gunakan metode sqltext dalam SQL MaxCompute. Contoh pernyataan:
    ./odpscmd -e "select * from dual;"             

    Gunakan odps -help untuk informasi lebih lanjut.

Dapatkah saya mentransfer konfigurasi MaxCompute dari akun Alibaba Cloud satu ke akun Alibaba Cloud lain menggunakan pernyataan SQL?

Tidak, Anda tidak dapat mentransfer konfigurasi MaxCompute antar akun Alibaba Cloud menggunakan pernyataan SQL. Gunakan otorisasi paket untuk mentransfer konfigurasi. Informasi lebih lanjut tentang otorisasi paket dapat ditemukan di Praktik terbaik manajemen proyek pengembangan data multi-tim MaxCompute.

Bagaimana cara menyinkronkan data dari tabel di lingkungan pengembangan ke tabel di lingkungan produksi?

Jalankan perintah berikut pada Klien MaxCompute:
insert into project.table select * from project_dev.table;
Jika Anda tidak memiliki izin baca dan tulis pada tabel di lingkungan produksi, selesaikan otorisasi akun. Informasi lebih lanjut tentang otorisasi dapat ditemukan di Izin MaxCompute.

Bagaimana cara menentukan apakah suatu bidang kosong?

Gunakan operator SQL MaxCompute untuk menentukan apakah suatu bidang kosong. Informasi lebih lanjut tentang operator SQL MaxCompute dapat ditemukan di Operator.

Dapatkah saya menggunakan node Shell DataWorks untuk memanggil SQL MaxCompute?

Tidak, Anda tidak dapat menggunakan node Shell DataWorks untuk memanggil SQL MaxCompute. Node Shell hanya mendukung sintaks shell standar dan tidak mendukung sintaks interaktif. Untuk pekerjaan dalam jumlah besar, gunakan node SQL ODPS. Informasi lebih lanjut tentang node SQL ODPS dapat ditemukan di Mengembangkan tugas SQL MaxCompute.

Bagaimana cara menjalankan loop dalam SQL?

Gunakan node do-while DataWorks untuk menjalankan loop dalam SQL.

Bagaimana cara memanggil node penugasan dalam SQL?

Gunakan node for-each DataWorks untuk memanggil node penugasan dalam SQL.

Bagaimana cara melihat semua pernyataan SQL yang dieksekusi secara harian dalam proyek MaxCompute?

Jalankan perintah show p -all -limit <number>; untuk melihat informasi SQL historis semua anggota dalam proyek MaxCompute. Informasi lebih lanjut tentang cara melihat informasi instans dapat ditemukan di Lihat informasi instans.

Bagaimana cara melihat jumlah sumber daya yang dikonsumsi oleh pekerjaan SQL?

Lihat jumlah sumber daya yang dikonsumsi oleh pekerjaan SQL dalam tagihan Anda. Informasi lebih lanjut tentang cara menganalisis tagihan MaxCompute dapat ditemukan di Analisis catatan penggunaan tagihan MaxCompute.

Bagaimana cara memperkirakan biaya eksekusi pekerjaan SQL?

Jalankan perintah cost sql untuk memperkirakan biaya eksekusi pekerjaan SQL. Informasi lebih lanjut tentang perintah cost sql dapat ditemukan di Estimasi biaya.

Bagaimana cara meningkatkan efisiensi operasi pekerjaan ketika pekerjaan SQL berjalan lambat?

Gunakan Logview untuk mendiagnosis pekerjaan SQL yang berjalan lambat. Informasi lebih lanjut dapat ditemukan di Kasus diagnostik Logview.

Informasi lebih lanjut tentang cara mengoptimalkan pekerjaan SQL dapat ditemukan di Praktik terbaik untuk optimasi komputasi.