MaxCompute tabloları, bölümler ve sütunlarla ilgili DDL işlemleri hakkında sıkça sorulan sorular.
Sanal tablo desteği
MaxCompute sanal tabloları desteklemez. Manuel olarak bir DUAL tablosu oluşturabilirsiniz.
Dizin desteği
Hayır. MaxCompute tablolarında dizin bulunmaz. Ancak Hash Clustering özelliği, bir veritabanındaki küme dizinine benzer şekilde çalışır. Daha fazla bilgi için bkz. Tablo işlemleri.
Hash Clustering niteliğini değiştirme
Bir tabloya Hash Clustering niteliği eklemek için aşağıdaki komutu çalıştırın:
alter table table_name [clustered by (col_name [, col_name, ...]) [sorted by (col_name [asc | desc] [, col_name [asc | desc] ...])] into number_of_buckets buckets];.Bir tablodan Hash Clustering niteliğini kaldırmak için aşağıdaki komutu çalıştırın:
alter table table_name not clustered;.
Bölümlenmemiş tabloları bölümlenmiş tablolara dönüştürme
Bölümlenmemiş bir tabloyu bölümlenmiş bir tabloya dönüştüremez veya mevcut bir tabloya bölüm anahtar sütunları ekleyemezsiniz. Yeni bir bölümlenmiş tablo oluşturmanız gerekir. Daha fazla bilgi için bkz. Tablo işlemleri.
Silinen bir tabloyu geri yükleme
MaxCompute, varsayılan olarak 24 saatlik ücretsiz bir saklama süresiyle yedekleme ve kurtarma sağlar; bu süreyi özelleştirebilirsiniz. Bir tabloyu yanlışlıkla silerseniz bu süre içinde verilerini geri yükleyebilirsiniz. Yedekleme ve kurtarma hakkında daha fazla bilgi için bkz. yedekleme ve kurtarma.
Sahibe göre tabloları sorgulama
Belirli bir kullanıcı tarafından oluşturulan tabloları bulmak için TABLES metadata görünümünü kullanın ve owner_name alanına göre filtreleyin. TABLES hakkında daha fazla bilgi için bkz. TABLES.
Bir tablonun var olup olmadığını kontrol etme
Belirli bir tablonun var olup olmadığını kontrol etmek için TABLE_EXISTS işlevini kullanabilirsiniz. Daha fazla bilgi için bkz. TABLE_EXISTS.
Bir projedeki tüm tablo adlarını alma
Bir projedeki tüm tablo adlarını almak için MaxCompute istemcisinde show tables; komutunu çalıştırabilir veya MaxCompute'ın metadata hizmetini kullanabilirsiniz. Daha fazla bilgi için bkz. Tablo işlemleri veya Information Schema.
Bir projedeki tüm bölümlenmiş tabloları bulma
Projenizdeki tüm bölümlenmiş tabloları bulmak için MaxCompute istemcisinde aşağıdaki komutu çalıştırabilirsiniz.
select table_name from information_schema.columns where is_partition_key = true group by table_name;
Bir tablonun son erişim zamanını kontrol etme
DataWorks'te veri haritası sayfasına gidin, tablonuzu arayın ve ayrıntılar sayfasını açın. Technical Information panelinde şu alanları bulabilirsiniz: Technical type, Last DDL change time, Last data modification time, Last access time ve Compute engine information.
Bir tablonun veri hacmini kontrol etme
Bir tablonun veri hacmi, satır sayısını ve kapladığı fiziksel alanı ifade eder:
Tüm bir tablonun fiziksel alanını kontrol etmek için
desckomutunu çalıştırın. Satır sayısını kontrol etmek içinselect count() as cnt from table_name;SQL ifadesini çalıştırın.
Belirli bir bölümün fiziksel alanını kontrol etmek için bir
WHEREyan tümcesiyledesckomutunu çalıştırın. Bölümdeki satır sayısını kontrol etmek içinselect count() as cnt from table_name where ...;SQL ifadesini çalıştırın.
Bir tablonun satır sayısını kontrol etme
Bölümlenmiş veya bölümlenmemiş bir tablodaki satır sayısını kontrol etmek için MaxCompute istemcisinde select count(*) from table_name; komutunu çalıştırabilirsiniz.
Tablonun DataWorks'te görünmemesi
Bir tabloyu DataWorks UI'de oluşturmak yerine bir SQL ifadesi kullanarak oluşturursanız tablo iki ila üç saat boyunca görünmeyebilir.
Bölümler ve bölüm anahtar sütunları
MaxCompute'daki tablolar bölümlenebilir. Bölümlenmiş bir tabloda, bölümler oluşturmak için kullandığınız bölüm anahtar sütunları bulunur.
Örneğin, ds=20150101 olarak belirtilen bir bölümde ds bir bölüm anahtar sütunudur ve ds=20150101 ise bir bölümdür.
Optimum bölüm sayısı
Bir MaxCompute tablosunda bölüm başına sınırsız kapasite ile en fazla 60.000 bölüm bulunabilir. Ancak çok fazla bölüm, veri istatistiklerini ve analizini karmaşıklaştırabilir.
MaxCompute, iş başına maksimum örnek sayısını sınırlar. Bir işin kullandığı örnek sayısı, girdi veri hacmine ve bölüm sayısına bağlıdır. Bu nedenle iş ihtiyaçlarınıza uygun bir bölümlendirme stratejisi seçmeniz gerekir.
Bölüm anahtarı olmayan bir tabloya bölüm ekleme
MaxCompute, mevcut bir tabloya bölüm anahtar alanları eklemeyi veya bunları değiştirmeyi desteklemez. Yeni bir bölümlenmiş tablo oluşturabilir ve kaynak tablodan yeni tabloya veri aktarmak için dinamik bölümlendirme SQL ifadesini kullanabilirsiniz. Daha fazla bilgi için bkz. Verileri dinamik bölümlere ekleme veya üzerine yazma (DYNAMIC PARTITION).
Bir bölümün var olup olmadığını kontrol etme
Belirli bir bölümün var olup olmadığını kontrol etmek için PARTITION_EXISTS işlevini kullanabilirsiniz. Daha fazla bilgi için bkz. PARTITION_EXISTS.
Bölüm sayısını kontrol etme
Bölüm adlarını almak ve ardından saymak için Information Schema'daki PARTITIONS görünümünü kullanabilirsiniz.
Sütun ekleme veya silme
MaxCompute sütun eklemeyi ve silmeyi destekler. Karmaşık veri türündeki sütunların eklenmesi ve sütunların silinmesi davetli ön izleme aşamasındadır. Deneme için başvurmak üzere bkz. Yeni özelliklerin denemesi için başvuru.
Sütun ekleme
Sütun eklemek için aşağıdaki komutu çalıştırın. Tablo zaten veri içeriyorsa yeni sütunlar mevcut tüm satırlar için NULL olur.
alter table table_name add columns (col_name1 type1, col_name2 type2…);
Sözdizimi hakkında daha fazla bilgi için bkz. Sütun ekleme.
Otomatik artan bir sütun ayarlama
MaxCompute otomatik artan sütunları desteklemez. Az miktarda veri için geçici çözüm olarak ROW_NUMBER işlevini kullanabilirsiniz.
Tablo başına maksimum sütun sayısı
Tek bir MaxCompute tablosunda en fazla 1.200 sütun bulunabilir. Tablonuz bu sınırı aşarsa aşağıdaki çözümleri göz önünde bulundurun:
Verinizdeki boyut sayısını 1.200 sütuna veya daha azına düşürün.
Veri depolama yöntemini değiştirin; örneğin, ilişkili verileri konsolide etmek için diziler veya eşlemeler gibi karmaşık veri türleri kullanın.
Anahtar sözcükleri sütun adı olarak kullanma
Bir tablo, sütun veya bölümü adlandırmak için bir anahtar sözcük kullanırsanız anahtar sözcüğü ters tırnak içine () almanız gerekir. Aksi takdirde hata oluşur.
Bir sütunun veri türünü değiştirme
Mevcut bir sütunun veri türünü değiştiremezsiniz. Bunun yerine istenen veri türüne sahip yeni bir tablo oluşturun ve verileri geçirin. Veri türleri hakkında daha fazla bilgi için bkz. Veri türü sürümleri.
Yaşam döngüsüne sahip bölümlenmiş tablolar için veri temizleme
Yapılandırılmış yaşam döngüsüne sahip bir tablodaki bir bölüm, belirtilen süre içinde değiştirilmediğinde MaxCompute bunu otomatik olarak geri alır.
Eski bir bölümün yaşam döngüsü süresi içinde değiştirilip değiştirilmediğini kontrol etmek için desc table_name partition(pt_spec); komutunu çalıştırın. Yaşam döngüsü ayarını görüntülemek için desc tablename; komutunu çalıştırın. MaxCompute süresi dolmuş bölümleri her gün saat 17:00'de geri alır. DataWorks konsolundaki durum güncellemesi gecikebilir; bu gecikme tipik olarak bir güne kadar çıkabilir.