Tabloyu sil veya değiştir

Azure Databricks, Unity Kataloğu veya Hive meta veri deposuna kayıtlı tabloları bırakmak ve değiştirmek için SQL standart DDL komutlarını destekler. Bırakma ve değiştirme davranışı tablo türüne ve meta veri deposuna göre farklılık gösterir. Veri kaybını veya eşzamanlı işlem hatalarını önlemek için doğru komutu seçin.

Tablo ne zaman silinir?

Databricks, tabloyu kalıcı olarak silmek istediğinizde ve aynı konumda yeni bir tablo oluşturmak istemediğinizde meta veri deposundan tablo kaldırmak için kullanmanızı DROP TABLE önerir. Örneğin:

DROP TABLE table_name

DROP TABLE tablonun türüne ve tablonun Unity Kataloğu'na mı yoksa eski Hive meta deposuna mı kayıtlı olduğuna bağlı olarak farklı davranışlara sahiptir.

Tablo türü Metadükkan Davranış
Managed Unity Kataloğu Tablo meta veri deposundan kaldırılır ve temel alınan veriler silinmek üzere işaretlenir. Yönetilen bir tabloyu yapılandırılan kurtarma dönemi içinde (varsayılan 7 gün) kullanabilirsiniz UNDROP . Bkz. Yönetilen tabloyu silme.
Managed Hive Tablo meta veri deposundan kaldırılır ve temel alınan veriler silinir.
External Unity Kataloğu Tablo meta veri deposundan kaldırılır, ancak temel alınan veriler kalır. URI erişim ayrıcalıkları artık verileri içeren dış konum tarafından yönetilir.
External Hive Tablo meta veri deposundan kaldırılır, ancak temel alınan veriler kalır. Tüm URI erişim ayrıcalıkları değiştirilmez.

Unity Kataloğu, iç tablo kimliğini kullanarak tabloların geçmişini korur. Tüm tablo türleri için, bırakma işlemi tamamlandıktan sonra, daha önce kaydedilen tablo adının meta veri deposundaki verilere ve tablo geçmişine etkin bir bağlantısı yoktur.

Bkz. DROP TABLE.

Note

Databricks, eşzamanlı işlemler için beklenmeyen sonuçlara neden olabileceğinden üretim işlem hatları veya sistemler için aynı adı kullanarak tabloyu bırakmanızı ve yeniden oluşturmanızı önermez. Bkz. Verileri eşzamanlı işlemlerle değiştirme.

Tablo ne zaman değiştirilir?

Databricks, yeni verilerle hedef tabloyu tamamen yeniden yazmak istediğiniz durumlarda CREATE OR REPLACE TABLE ifadelerini kullanmanızı önerir. Örneğin, bir Parquet dizinindeki tüm verilerin olduğu bir tablonun üzerine yazmak için aşağıdaki komutu çalıştırın:

CREATE OR REPLACE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`

CREATE OR REPLACE TABLE kullanılan tablo türüne veya meta veri deposuna bakılmaksızın aynı semantiklere sahiptir. Aşağıdakiler, 'nin önemli avantajlarıdır CREATE OR REPLACE TABLE:

  • Tablo içeriği değiştirilir, ancak tablo kimliği korunur.
  • Tablo geçmişi korunur ve komutuyla RESTORE tabloyu önceki bir sürüme döndürebilirsiniz.
  • İşlem tek bir işlemdir, bu nedenle tablonun mevcut olmadığı hiçbir zaman yoktur.
  • Tablodan okunan eşzamanlı sorgular kesintisiz olarak devam edebilir. Değiştirmeden önceki ve sonraki sürüm tablo geçmişinde hala mevcut olduğundan, eşzamanlı sorgular tablonun her iki sürümüne de gerektiğinde başvurabilir.
  • Özgün tabloda sütun maskeleri varsa, bu maskeler yeni tabloda hala var olan tüm sütunlar için korunur. Bu, veri erişim ilkelerinin korunmasını sağlar.

Bkz. CREATE TABLE [KULLANARAK].

Verileri eşzamanlı işlemlerle değiştirme

Eşzamanlı işlemlerde kullanılabilecek bir tablodaki verilerin tam değişimini gerçekleştirmek istediğinizde, kullanmanız CREATE OR REPLACE TABLEgerekir.

Aşağıdaki anti-pattern'i kullanmamalısınız:

DROP TABLE IF EXISTS table_name;

CREATE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`;

Unity Kataloğu'nu kullanıp kullanmadığınız tüm tablo türleri için bu deseni kullanmak hataya, bırakılan kayıtlara veya bozuk sonuçlara neden olabilir.

Bunun yerine, Databricks aşağıdaki örnekte olduğu gibi her zaman kullanılmasını CREATE OR REPLACE TABLEönerir:

CREATE OR REPLACE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`

Atomik değiştirme işlemi tablo geçmişini koruduğundan, eşzamanlı işlemler başvurdukları kaynak tablonun sürümünü doğrulayabilir ve beklenmedik davranışlara yol açmadan bu tür eşzamanlı işlemlerin başarısız olmasına neden olabilir veya bunları uzlaştırabilir.