Tüm Ürünler
Search
Belge Merkezi

MaxCompute:Genel SQL SSS

Son Güncelleme:Oct 10, 2026

MaxCompute'te SQL deyimlerini çalıştırmayla ilgili veri türleri, SQL sınırları ve diğer konular hakkında sıkça sorulan sorular.

Kategori

SSS

Veri türleri

SQL sınırları

SQL işi yürütme

SQL işi izleme

SQL işi optimizasyonu

SQL işim yavaş çalışıyor. Nasıl optimize edebilirim?

MaxCompute'te saatle ilgili bir alan, saat bilgisi içermeyen bir tarihi depolayabilir mi?

Evet. MaxCompute V2,0 veri türlerinin etkinleştirilmesini gerektiren DATE veri türünü kullanın. Daha fazla bilgi için bkz. 2,0 veri türü sürümleri.

MaxCompute SQL deyiminde iki DOUBLE değerini eşitlik açısından karşılaştırdığımda neden beklenmeyen sonuçlar alıyorum?

MaxCompute'teki DOUBLE veri türü kesinlik hatalarına maruz kalır. İki DOUBLE değerini doğrudan karşılaştırmak için eşittir işaretini (=) kullanmayın.

Bunun yerine, bir değeri diğerinden çıkarın ve mutlak farkın eşit kabul edilecek kadar küçük olup olmadığını kontrol edin.

DECIMAL veri türü için kesinlik taşması hatasını nasıl çözerim?

Oturum düzeyinde set odps.sql.decimal.odps2=true; komutunu çalıştırarak MaxCompute V2,0 veri türleri desteğini etkinleştirebilirsiniz. MaxCompute'te DECIMAL veri türü için maksimum kesinlik 38 basamaktır. Verileri maksimum kesinlikle depolamak, işleme sırasında taşma hatalarının oluşma olasılığını artırır. Mümkün olduğunda daha düşük bir kesinlik kullanın.

Yeni oluşturulan MaxCompute projeleri örtük veri türü dönüştürmeyi desteklemiyor. Bunu nasıl çözebilirim?

Örtük dönüştürmeye izin vermek için MaxCompute V2,0 veri türleri desteğini devre dışı bırakın. Daha fazla bilgi için bkz. Veri türü dönüştürme.

Verileri sorgularken 'XXX type is not enabled in current mode' (XXX türü şu anki modda etkin değil) şeklinde bir hata mesajı görüyorum. Bunu nasıl çözerim?

Oturum düzeyinde set odps.sql.decimal.odps2=true; komutunu çalıştırarak MaxCompute V2,0 veri türleri desteğini etkinleştirebilirsiniz.

Tek bir alan için geçerli olan 8 MB sınırını nasıl yönetebilirim?

Bir MaxCompute tablosundaki tek bir alan 8 MB'ı aşamaz. Bir alan bu sınırı aşarsa, iş ihtiyaçlarınıza göre bunu daha küçük birden fazla alana bölün.

Karmaşık yapılara sahip büyük alanlar, hesaplama performansını düşürebilir. Bundan kaçınmak için veri mimarinizi veri ambarı standartlarına uygun olarak tasarlayın:

  • Karmaşık yapılara sahip ham verileri, İşlemsel Veri Deposu (ODS) katmanında sıkıştırılmış biçimde arşivleyin.

  • ODS katmanındaki artımlı verileri düzenli olarak (örneğin günlük) temizleyin. Karmaşık alanları birden fazla basit alana bölün ve daha kolay analiz için bunları Ortak Veri Modeli (CDM) katmanı tablolarında saklayın.

Bir MaxCompute SQL deyimi çalıştırdığımda 'partitions exceeds the specified limit' (bölümler belirtilen sınırı aşıyor) hatası alıyorum. Bunu nasıl çözerim?

  • Belirti

    Bir MaxCompute SQL deyimi çalıştırdığınızda aşağıdaki hata mesajı döndürülür.

    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
  • Neden

    Tek bir MaxCompute tablosu en fazla 60.000 bölümü destekler ancak tek bir sorgu en fazla 10.000 bölüme erişebilir. Bu hata aşağıdaki nedenlerle oluşabilir:

    • Neden 1: Bir bölüm koşulu belirtmediniz.

    • Neden 2: Kullanıcı kimliği gibi bir alanı bölüm alanı olarak kullandınız ve bu durum çok fazla bölüm oluşmasına neden oldu.

  • Çözüm

    • Neden 1 için çözüm: Bir bölüm koşulu belirtmediyseniz bir tane ekleyin.

    • Neden 2 için çözüm: Bölüm anahtarı sütunu uygun değilse ve çok fazla bölüme neden oluyorsa bölüm anahtarı sütununu değiştirmeyi düşünün.

MaxCompute SQL deyimlerini etkileşimli olmayan şekilde nasıl çalıştırabilirim?

MaxCompute SQL deyimlerini etkileşimli olmayan şekilde çalıştırmak için Shell kullanabilirsiniz:

  • Bir SQL dosyasını okumak ve işlemek için odps -f filename komutunu kullanın.

    Bir SQL deyimi çalıştırdığınızda, filename dosyasının ilk satırı SQL modunu belirtmek için SQL olmalıdır.

    SQL
    
      select ... from table_name where xxx;                
  • Tek bir SQL deyimi çalıştırmak için MaxCompute SQL'deki sqltext yöntemini kullanın.

    ./odpscmd -e "select * from dual;"             

    Daha fazla bilgi için odps -help komutunu çalıştırın.

Tablo verilerini geliştirme ortamından üretim ortamına nasıl senkronize edebilirim?

Aşağıdaki komutu MaxCompute istemcisinde çalıştırın.

insert into project.table select * from project_dev.table;

Üretim tablosunda okuma ve yazma izniniz yoksa gerekli izinleri hesabınıza verin. Daha fazla bilgi için bkz. MaxCompute izinleri.

Bir alanın boş olup olmadığını nasıl kontrol edebilirim?

Bir alanın boş olup olmadığını kontrol etmek için MaxCompute SQL'deki operatörleri kullanın. Daha fazla bilgi için bkz. Operatörler.

DataWorks'teki bir Shell düğümünden MaxCompute SQL çağırabilir miyim?

Hayır. Shell düğümleri yalnızca standart Shell sözdizimini destekler, etkileşimli sözdizimini desteklemez. Birden fazla işi çalıştırmak için bunun yerine bir ODPS SQL düğümü kullanın. Daha fazla bilgi için bkz. ODPS SQL görevi geliştirme.

SQL'de döngü uygulamasını nasıl yapabilirim?

DataWorks'te bir do-while düğümü kullanın.

SQL'de atama düğümünü nasıl çağırabilirim?

DataWorks'te bir for-each düğümü kullanın.

Belirli bir günde MaxCompute'te çalıştırılan tüm SQL deyimlerini nasıl görüntüleyebilirim?

Bir MaxCompute projesindeki tüm üyelerin SQL geçmişini görüntülemek için show p -all -limit <number>; komutunu çalıştırın. Daha fazla bilgi için bkz. Örnek bilgilerini görüntüleme.

Bir SQL işinin kaynak kullanımını nasıl görüntüleyebilirim?

Faturanızda bir SQL işinin kaynak kullanımını görüntüleyin. Daha fazla bilgi için bkz. MaxCompute faturasındaki kullanım ayrıntılarını analiz etme.

Bir SQL deyiminin yürütme maliyetini nasıl görüntüleyebilirim?

Sorgu maliyetlerini tahmin etmek için cost sql komutunu kullanın. Daha fazla bilgi için bkz. Ölçüm ve tahmin.

SQL işim yavaş çalışıyor. Nasıl optimize edebilirim?

Yavaş bir SQL işinin nedenini belirlemek için Logview kullanın. Daha fazla bilgi için bkz. Logview tabanlı tanılama uygulamaları.

SQL işi optimizasyonu hakkında daha fazla bilgi için bkz. Hesaplama optimizasyonu için en iyi uygulamalar.