Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Databricks SQL
Databricks Runtime 17.3 a vyšší
Důležité
Tato funkce je ve verzi Public Preview a je dostupná jenom pro zúčastněné zákazníky. Pokud se chcete zúčastnit náhledu, přihlaste se vyplněním tohoto formuláře. Tato funkce podporuje pouze přerušení připojení pro zahraniční katalogy pomocí Hive Metastore (HMS) a Glue Federation.
DROP CONNECTION Pomocí příkazu převeďte cizí katalog na standardní katalog v katalogu Unity. Po vyřazení připojení už katalog nesynchronizuje cizí tabulky z externího katalogu. Místo toho funguje jako standardní katalog Unity, který obsahuje spravované nebo externí tabulky. V katalogu Unity je nyní váš katalog označený jako standardní místo zahraničního. Tento příkaz nemá vliv na tabulky v externím katalogu; má vliv pouze na váš cizí katalog v katalogu Unity.
Vyžaduje OWNER nebo MANAGE, USE_CATALOG a BROWSE oprávnění v katalogu.
Syntaxe
ALTER CATALOG catalog_name DROP CONNECTION { RESTRICT | FORCE }
Parametry
-
Název cizího katalogu, který se má převést na standardní katalog.
OMEZIT
Výchozí chování
DROP CONNECTIONpřiRESTRICTpřevodu cizího katalogu na standardní katalog selže, pokud jsou v katalogu nějaké cizí tabulky nebo cizí zobrazení.Pokud chcete upgradovat cizí tabulky na spravované nebo externí tabulky Katalogu Unity, přečtěte si téma Cizí tabulky pomocí SQL nebo Převod cizí tabulky na externí tabulku katalogu Unity. Chcete-li převést cizí zobrazení, viz SET SPRAVOVANÉ (CIZÍ ZOBRAZENÍ).
SÍLA
DROP CONNECTIONpřiFORCEpřevodu cizího katalogu na standardní katalog zahodí všechny zbývající cizí tabulky nebo zobrazení v cizím katalogu. Tento příkaz nezahodí žádná data ani metadata v externím katalogu; zahodí pouze metadata synchronizovaná do katalogu Unity, aby se vytvořila cizí tabulka.Výstraha
Tento příkaz nejde vrátit zpět. Pokud chcete federovat cizí tabulky zpět do katalogu Unity, musíte znovu vytvořit cizí katalog.
Examples
-- 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.
Skripty pro kontrolu cizích tabulek a zobrazení
Poznámka:
Před použitím DROP CONNECTION RESTRICTmůžete pomocí těchto skriptů Pythonu zkontrolovat cizí tabulky a zobrazení v katalogu pomocí rozhraní REST API katalogu Unity.
Skript pro výpis všech cizích tabulek a zobrazení z federovaného katalogu:
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)
Skript pro výpis všech externích tabulek a zobrazení, které jsou v aktivním stavu zřizování:
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)