Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunun için geçerlidir:
Databricks SQL
Databricks Runtime 17.3 ve üzeri
Önemli
Bu özellik Genel Önizleme aşamasındadır ve şu anda yalnızca katılan müşteriler tarafından kullanılabilir. Önizlemeye katılmak için bu formu doldurarak başvurun. Bu özellik, yalnızca Hive Meta Veri Deposu (HMS) ve Glue Federasyonu kullanarak yabancı kataloglar için bağlantının kesilmesini destekler.
Unity Kataloğu'nda DROP CONNECTION yabancı kataloğu standart kataloğa dönüştürmek için komutunu kullanın. Bağlantı kesildikten sonra, katalog artık dış katalogdan yabancı tabloları senkronize etmez. Bunun yerine, yönetilen veya dış tablolar içeren standart bir Unity Catalog gibi davranır. Kataloğunuz artık Unity Kataloğu'nda yabancı yerine standart olarak etiketlendi. Bu komut dış kataloğunuzdaki tabloları etkilemez; yalnızca Unity Kataloğu'ndaki yabancı kataloğunuzu etkiler.
Katalog üzerinde OWNER, MANAGE, USE_CATALOG ve BROWSE izinleri gerektirir.
Sözdizimi
ALTER CATALOG catalog_name DROP CONNECTION { RESTRICT | FORCE }
Parametreler
-
Standart kataloğa dönüştürülecek yabancı kataloğun adı.
SINIRLAMAK
Varsayılan davranış.
DROP CONNECTIONileRESTRICT, katalogda herhangi bir yabancı tablo veya yabancı görünüm varsa, yabancı kataloğu standart kataloğa dönüştürürken başarısız olur.Yabancı tabloları Unity Kataloğu yönetilen veya dış tablolara yükseltmek için bkz . Yabancı tabloyu yönetilen Unity Kataloğu tablosuna dönüştürme veya Yabancı tabloyu dış Unity Kataloğu tablosuna dönüştürme. Yabancı görünümleri dönüştürmek için bkz SET . MANAGED (FOREIGN VIEW).
KUVVET
DROP CONNECTIONile,FORCEyabancı kataloğu standart kataloğa dönüştürürken, yabancı katalogdaki kalan yabancı tabloları veya görünümleri kaldırır. Bu komut, harici kataloğunuzdaki veri veya meta verileri silmez; yalnızca yabancı tabloyu oluşturmak için Unity Catalog'a eşitlenen meta verileri siler.Uyarı
Bu komutu geri alamazsınız. Yabancı tabloları Unity Kataloğu'na yeniden birleştirmek istiyorsanız, yabancı kataloğu yeniden oluşturmanız gerekir.
Örnekler
-- Convert an existing foreign catalog using default RESTRICT behavior
> ALTER CATALOG hms_federated_catalog DROP CONNECTION;
OK
-- Convert an existing foreign catalog using FORCE to drop foreign tables
> ALTER CATALOG hms_federated_catalog DROP CONNECTION FORCE;
OK
-- RESTRICT fails if foreign tables or views exist
> ALTER CATALOG hms_federated_catalog DROP CONNECTION RESTRICT;
[CATALOG_CONVERSION_FOREIGN_ENTITY_PRESENT] Catalog conversion from UC Foreign to UC Standard failed because catalog contains foreign entities (up to 10 are shown here): <entityNames>. To see the full list of foreign entities in this catalog, please refer to the scripts below.
-- FORCE fails if catalog type isn't supported
> ALTER CATALOG redshift_federated_catalog DROP CONNECTION FORCE;
[CATALOG_CONVERSION_UNSUPPORTED_CATALOG_TYPE] Catalog cannot be converted from UC Foreign to UC Standard. Only HMS and Glue Foreign UC catalogs can be converted to UC Standard.
Yabancı tabloları ve görünümleri kontrol etmek için betikler
Uyarı
kullanmadan DROP CONNECTION RESTRICTönce, Unity Kataloğu REST API'sini kullanarak kataloğunuzdaki yabancı tabloları ve görünümleri denetlemek için bu Python betiklerini kullanabilirsiniz.
Federasyon kataloğundaki tüm yabancı tabloları ve görünümleri listelemek için betik:
import requests
def list_foreign_uc_tables_and_views(catalog_name, pat_token, workspace_url):
"""
Lists all foreign tables and views in the specified Unity Catalog.
Args:
catalog_name (str): The name of the catalog to search.
pat_token (str): Personal Access Token for Databricks API authentication.
workspace_url (str): Databricks workspace hostname (e.g., "https://adb-xxxx.x.azuredatabricks.net").
Returns:
list: A list of dictionaries containing information about the foreign tables/views.
"""
base_url = f"{workspace_url}/api/2.1/unity-catalog"
headers = {
"Authorization": f"Bearer {pat_token}",
"Content-Type": "application/json"
}
# Step 1: List all schemas in the catalog (GET request)
schemas_url = f"{base_url}/schemas"
schemas_params = {
"catalog_name": catalog_name,
"include_browse": "true"
}
schemas_resp = requests.get(schemas_url, headers=headers, params=schemas_params)
schemas_resp.raise_for_status()
schemas = schemas_resp.json().get("schemas", [])
schema_names = [schema["name"] for schema in schemas]
result = []
# Step 2: For each schema, list all tables/views and filter (GET request)
for schema_name in schema_names:
tables_url = f"{base_url}/table-summaries"
tables_params = {
"catalog_name": catalog_name,
"schema_name_pattern": schema_name,
"include_manifest_capabilities": "true"
}
tables_resp = requests.get(tables_url, headers=headers, params=tables_params)
tables_resp.raise_for_status()
tables = tables_resp.json().get("tables", [])
for table in tables:
# Use OR for filtering as specified
if (
table.get("table_type") == "FOREIGN"
or table.get("securable_kind") in {
"TABLE_FOREIGN_HIVE_METASTORE_VIEW",
"TABLE_FOREIGN_HIVE_METASTORE_DBFS_VIEW"
}
):
result.append(table.get("full_name"))
return result
# Example usage:
# catalog = "hms_foreign_catalog"
# token = "dapiXXXXXXXXXX"
# workspace = "https://adb-xxxx.x.azuredatabricks.net"
# foreign_tables = list_foreign_uc_tables_and_views(catalog, token, workspace)
# for entry in foreign_tables:
# print(entry)
AKTİF sağlama durumundaki tüm yabancı tabloları ve görünümleri listelemek için betik:
import requests
def list_foreign_uc_tables_and_views(catalog_name, pat_token, workspace_url):
"""
Lists all foreign tables and views in the specified Unity Catalog.
Args:
catalog_name (str): The name of the catalog to search.
pat_token (str): Personal Access Token for Databricks API authentication.
workspace_url (str): Databricks workspace hostname (e.g., "https://adb-xxxx.x.azuredatabricks.net").
Returns:
list: A list of dictionaries containing information about the foreign tables/views.
"""
base_url = f"{workspace_url}/api/2.1/unity-catalog"
headers = {
"Authorization": f"Bearer {pat_token}",
"Content-Type": "application/json"
}
# Step 1: List all schemas in the catalog (GET request)
schemas_url = f"{base_url}/schemas"
schemas_params = {
"catalog_name": catalog_name,
"include_browse": "true"
}
schemas_resp = requests.get(schemas_url, headers=headers, params=schemas_params)
schemas_resp.raise_for_status()
schemas = schemas_resp.json().get("schemas", [])
schema_names = [schema["name"] for schema in schemas]
result = []
# Step 2: For each schema, list all tables/views and filter (GET request)
for schema_name in schema_names:
tables_url = f"{base_url}/table-summaries"
tables_params = {
"catalog_name": catalog_name,
"schema_name_pattern": schema_name,
"include_manifest_capabilities": "true"
}
tables_resp = requests.get(tables_url, headers=headers, params=tables_params)
tables_resp.raise_for_status()
tables = tables_resp.json().get("tables", [])
for table in tables:
# Use OR for filtering as specified
if (
table.get("table_type") == "FOREIGN"
or table.get("securable_kind") in {
"TABLE_FOREIGN_HIVE_METASTORE_VIEW",
"TABLE_FOREIGN_HIVE_METASTORE_DBFS_VIEW"
}
):
table_full_name = table.get('full_name')
get_table_url = f"{base_url}/tables/{table_full_name}"
tables_params = {
"full_name": table_full_name,
"include_browse": "true",
"include_manifest_capabilities": "true"
}
table_resp = requests.get(get_table_url, headers=headers, params=tables_params)
table_resp.raise_for_status()
provisioning_info = table_resp.json().get("provisioning_info", dict()).get("state", "")
if provisioning_info == "ACTIVE":
result.append(table_full_name)
return result
# Example usage:
# catalog = "hms_foreign_catalog"
# token = "dapiXXXXXXXXXX"
# workspace = "https://adb-xxxx.x.azuredatabricks.net"
# foreign_tables = list_foreign_uc_tables_and_views(catalog, token, workspace)
# for entry in foreign_tables:
# print(entry)