SHOW ICEBERG TABLES¶
Listet die Apache Iceberg™-Tabellen auf, für die Sie Zugriffsrechte haben.
Mit diesem Befehl können Sie Iceberg-Tabellen der aktuellen bzw. der angegebenen Datenbank oder des angegebenen Schemas oder alle Tabellen Ihres Kontos auflisten.
Dieser Befehl gibt andere Ausgabespalten als SHOW TABLES zurück. Die Ausgabe gibt Metadaten und Eigenschaften der Iceberg-Tabellen zurück, lexikographisch geordnet nach Datenbank, Schema und Name der Iceberg-Tabelle (Beschreibungen der Ausgabespalten finden Sie unter diesem Thema unter Ausgabe). Dies muss beachtet werden, wenn Sie die Ergebnisse mit den bereitgestellten Filtern filtern möchten.
Beachten Sie, dass unter diesem Thema Iceberg-Tabellen einfach als „Tabellen“ bezeichnet werden, es sei denn, die Angabe von Iceberg-Tabellen vermeidet Verwechslungen.
- Siehe auch:
CREATE ICEBERG TABLE , DROP ICEBERG TABLE , DESCRIBE ICEBERG TABLE , ALTER ICEBERG TABLE , SHOW TABLES
Syntax¶
SHOW [ TERSE ] [ ICEBERG ] TABLES [ LIKE '<pattern>' ]
[ IN
{
ACCOUNT |
DATABASE |
DATABASE <database_name> |
SCHEMA |
SCHEMA <schema_name> |
<schema_name>
}
]
[ STARTS WITH '<name_string>' ]
[ LIMIT <rows> [ FROM '<name_string>' ] ]
Parameter¶
TERSEGibt optional nur eine Teilmenge der Ausgabespalten zurück:
created_onnamekindDer Spaltenwert
kindist immer ICEBERG TABLE.database_nameschema_name
Standard: Kein Wert (alle Spalten sind in der Ausgabe enthalten)
ICEBERGGibt nur Iceberg-Tabellen zurück.
LIKE 'pattern'Filtert optional die Befehlsausgabe nach dem Objektnamen. Der Filter verwendet einen Musterabgleich ohne Berücksichtigung der Groß-/Kleinschreibung, aber mit Unterstützung von SQL-Platzhalterzeichen (
%und_).Die folgenden Muster geben beispielsweise die gleichen Ergebnisse zurück:
... LIKE '%testing%' ...... LIKE '%TESTING%' .... Standard: Kein Wert (die Ausgabe wird nicht gefiltert).
[ IN ... ]Gibt optional den Geltungsbereich des Befehls an. Geben Sie eine der folgenden Optionen an:
ACCOUNTGibt Datensätze für das gesamte Konto zurück.
DATABASE, .DATABASE db_nameGibt Datensätze für die aktuell verwendete Datenbank oder eine angegebene Datenbank (
db_name) zurück.Wenn Sie
DATABASEohnedb_nameangeben und aktuell keine Datenbank in Verwendung ist, hat das Schlüsselwort keine Auswirkungen auf die Ausgabe.Bemerkung
Die Verwendung von SHOW-Befehlen ohne eine
IN-Klausel in einem Datenbankkontext kann zu weniger Ergebnissen als erwartet führen.Objekte mit demselben Namen werden nur einmal angezeigt, wenn keine
IN-Klausel verwendet wird. Wenn Sie z. B. die Tabellet1inschema1und die Tabellet1inschema2haben und beide im Geltungsbereich des von Ihnen angegebenen Datenbankkontextes liegen (d. h. die von Ihnen ausgewählte Datenbank ist die übergeordnete Datenbank vonschema1undschema2), dann zeigt SHOW TABLES nur eine dert1-Tabellen an.SCHEMA, .SCHEMA schema_nameGibt Datensätze für das aktuell verwendete Schema oder ein angegebenes Schema (
schema_name) zurück.SCHEMAist optional, wenn aktuell eine Datenbank in Verwendung ist oder wenn Sie fürschema_nameden vollqualifizierten Schemanamen (z. B.db.schema) angeben.Wenn aktuell keine Datenbank in Verwendung ist, hat die Angabe von
SCHEMAkeine Auswirkungen auf die Ausgabe.
Wenn Sie
IN ...weglassen, hängt der Geltungsbereich des Befehls davon ab, ob für die Sitzung aktuell eine Datenbank in Verwendung ist:If a database is currently in use, the command returns the objects you have privileges to view in the database. This has the same effect as specifying
IN DATABASE.If no database is currently in use, the command returns the objects you have privileges to view in your account. This has the same effect as specifying
IN ACCOUNT.
STARTS WITH 'name_string'Filtert die Befehlsausgabe optional anhand der Zeichen, die am Anfang des Objektnamens angezeigt werden. Die Zeichenfolge muss in einfache Anführungszeichen gesetzt werden, wobei zwischen Groß-/Kleinschreibung unterschieden wird.
Die folgenden Zeichenfolgen geben beispielsweise unterschiedliche Ergebnisse zurück:
... STARTS WITH 'B' ...... STARTS WITH 'b' .... Standard: Kein Wert (die Ausgabe wird nicht gefiltert)
LIMIT rows [ FROM 'name_string' ]Schränkt optional die maximale Anzahl der zurückgegebenen Zeilen ein und ermöglicht gleichzeitig die „Paginierung“ der Ergebnisse. Die tatsächliche Anzahl der zurückgegebenen Zeilen kann geringer sein als das angegebene Limit. Beispielsweise ist die Anzahl der vorhandenen Objekte geringer als das angegebene Limit.
Die optionale Unterklausel
FROM 'name_string'dient als „Cursor“ für die Ergebnisse. Dies ermöglicht das Abrufen der angegebenen Anzahl von Zeilen nach der ersten Zeile, deren Objektname mit der angegebenen Zeichenfolge übereinstimmt:Die Zeichenfolge muss in einfache Anführungszeichen gesetzt werden, wobei zwischen Groß-/Kleinschreibung unterschieden wird.
Die Zeichenfolge muss nicht den vollständigen Datenbanknamen enthalten. Partielle Namen werden unterstützt.
Standard: Kein Wert (die Ausgabe wird nicht begrenzt)
Bemerkung
Bei SHOW-Befehlen, die sowohl die
FROM 'name_string'- als auch dieSTARTS WITH 'name_string'-Klausel unterstützen, können Sie diese beiden Klauseln in derselben Anweisung kombinieren. Beide Bedingungen müssen jedoch erfüllt sein, da sie sich sonst gegenseitig aufheben und keine Ergebnisse zurückgegeben werden.Außerdem werden Objekte in lexikographischer Reihenfolge nach Namen zurückgegeben. Daher gibt
FROM 'name_string'nur Zeilen mit einem höheren lexikografischen Wert zurück als die vonSTARTS WITH 'name_string'zurückgegebenen Zeilen.Beispiel:
... STARTS WITH 'A' LIMIT ... FROM 'B'würde keine Ergebnisse zurückgeben.... STARTS WITH 'B' LIMIT ... FROM 'A'würde keine Ergebnisse zurückgeben.... STARTS WITH 'A' LIMIT ... FROM 'AB'würde Ergebnisse zurückgeben (wenn Zeilen mit den Eingabezeichenfolgen übereinstimmen).
Anforderungen an die Zugriffssteuerung¶
Eine Rolle, die zur Ausführung dieser Operation verwendet wird, muss mindestens die folgenden Berechtigungen haben:
Berechtigung |
Objekt |
Anmerkungen |
|---|---|---|
SELECT |
Iceberg-Tabelle |
Um eine bestimmte Iceberg-Tabelle in der Ausgabe für SHOW ICEBERG TABLES zu sehen, muss eine Rolle die Berechtigung SELECT für diese Tabelle haben. |
USAGE-Berechtigung für die übergeordnete Datenbank und das Schema ist erforderlich, um Operationen an einem beliebigen Objekt in einem Schema durchzuführen. Beachten Sie, dass eine Rolle, die eine beliebige Berechtigung für ein Schema erhalten hat, es dieser Rolle erlaubt, das Schema aufzulösen. Zum Beispiel kann eine Rolle, der die CREATE-Berechtigung für ein Schema gewährt wurde, Objekte in diesem Schema erstellen, ohne auch USAGE für dieses Schema gewährt bekommen zu haben.
Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.
Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.
Nutzungshinweise¶
Wenn ein Konto (oder eine Datenbank oder ein Schema) eine große Anzahl von Iceberg-Tabellen hat, kann das Durchsuchen des gesamten Kontos (oder der Datenbank oder des Schemas) eine erhebliche Menge an Computeressourcen verbrauchen.
Für die Ausführung des Befehls ist kein aktives Warehouse erforderlich.
Der Befehl gibt nur Objekte zurück, für die der aktuellen Rolle des aktuellen Benutzers mindestens ein Zugriffsrecht zugewiesen wurde.
Das Zugriffsrecht MANAGE GRANTS gibt seinem Eigentümer implizit die Möglichkeit, jedes Objekt im Konto anzuzeigen. Standardmäßig haben nur der Kontoadministrator (Benutzer mit der Rolle ACCOUNTADMIN) und der Systemadministrator (Benutzer mit der Rolle SECURITYADMIN) die Berechtigung MANAGE GRANTS.
Um die Ausgabe dieses Befehls nachzubearbeiten, können Sie den Befehl Pipe-Operator (
->>) oder die RESULT_SCAN-Funktion verwenden. Beide Konstrukte behandeln die Ausgabe als Resultset, das Sie abfragen können.For example, you can use the pipe operator or RESULT_SCAN function to select specific columns from the SHOW command output or filter the rows.
When you refer to the output columns, use double-quoted identifiers for the column names. For example, to select the output column
type, specifySELECT "type".You must use double-quoted identifiers because the output column names for SHOW commands are in lowercase. The double quotes ensure that the column names in the SELECT list or WHERE clause match the column names in the SHOW command output that was scanned.
Der Wert für
LIMIT rowsdarf10000nicht überschreiten. WennLIMIT rowsnicht angegeben wird und das Resultset mehr als 10.000 Zeilen hat, führt der Befehl zu einem Fehler.Um Ergebnisse anzuzeigen, für die mehr als 10.000 Datensätze vorhanden sind, fügen Sie entweder
LIMIT rowsein oder fragen Sie die entsprechende Ansicht im Snowflake Information Schema ab.
Ausgabe¶
Bemerkung
Das folgende Ausgabeschema gilt für den Befehl SHOW ICEBERG TABLES. Weitere Informationen zur Ausgabe von SHOW TABLES finden Sie unter Identifizieren von Iceberg-Tabellen mit SHOW TABLES (unter diesem Thema).
Die Befehlsausgabe enthält Tabelleneigenschaften und Metadaten in den folgenden Spalten:
Spalte |
Beschreibung |
|---|---|
|
Datum und Uhrzeit der Erstellung der Tabelle. |
|
Name der Tabelle. |
|
Datenbank, in der die Tabelle gespeichert ist. |
|
Schema, in dem die Tabelle gespeichert ist. |
|
Rolle, der die Tabelle gehört. |
|
Name des externen Volumes, auf dem die Daten und Metadaten der Iceberg-Tabelle gespeichert sind. |
|
Name des mit der Iceberg-Tabelle verbundenen Katalogintegrationsobjekts, wenn die Tabelle nicht von Snowflake verwaltet wird. |
|
Typ der Iceberg-Tabelle. |
|
Name der Tabelle, wie sie vom Katalog erkannt wird. |
|
Bei extern verwalteten Tabellen der Namespace, der bei der Erstellung der Tabelle definiert wurde. Wenn nicht auf Tabellenebene definiert, der Standard-Namespace, der mit der von der Tabelle verwendeten Katalogintegration verbunden ist. Für von Snowflake verwaltete Tabellen, die Sie mit Snowflake Open Catalog synchronisieren, ist dieses Feld nicht erforderlich, daher lautet der Wert |
|
Relativer Pfad vom Speicherort |
|
Gibt an, ob Snowflake Metadaten an den durch |
|
Kommentar zur Tabelle. |
|
Liste von Objekten mit Informationen zu den Tabellenspalten, die die Spaltenprojektion verwenden. Weitere Informationen dazu finden Sie unter name_mapping. |
|
Der Typ der Rolle, die Eigentümer des Objekts ist, zum Beispiel |
|
Bezeichnet den Namen der Katalogintegration für Snowflake Open Catalog, mit der die von Snowflake verwaltete Apache Iceberg™-Tabelle synchronisiert wird. Wenn die Tabelle nicht mit Snowflake Open Catalog synchronisiert wird oder nicht von Snowflake verwaltet wird, ist der Wert |
|
Der automatische Aktualisierungsstatus für eine extern verwaltete Iceberg-Tabelle. Diese Spalte zeigt die gleichen Ergebnisse für die Tabelle an wie die Funktion SYSTEM$AUTO_REFRESH_STATUS. |
|
Liste der Objekte, die die Apache Iceberg™-Partitionsspezifikationen für die Tabelle beschreiben, wie sie in der Iceberg-Metadatendatei zu finden sind. Enthält Spezifikationen sowohl für von Snowflake verwaltete als auch für extern verwaltete Iceberg-Tabellen. Weitere Informationen dazu finden Sie unter partition_specs. |
|
ID für die Partitionsspezifikation, die derzeit für die Iceberg-Tabelle aktiv ist. Diese ID entspricht einem Wert für |
name_mapping¶
Die Ausgabespalte name_mapping liefert Informationen zu den Tabellenspalten, die die Spaltenprojektion verwenden.
Wenn eine Tabelle keine Spalten mit einer verknüpften Namenszuordnung enthält, hat die Ausgabespalte den Wert [NULL]. Andernfalls ist der Wert eine Liste von Objekten, wobei jedes Objekt einer Spalte entspricht, die eine zugehörige Namenszuordnung hat (manchmal auch als zugeordnetes Feld bezeichnet). Jedes Objekt kann die folgenden drei Eigenschaften enthalten:
field-id: Die Iceberg-Feld-ID.names: Eine Liste von Namenzeichenfolgen für das Feld.fields: Eine Liste von Feldzuordnungen für die untergeordneten Felder von „struct“-, „map“- oder „list“-Spalten.
Beispiel:
[
{
"field-id": 1,
"names": [
"id",
"record_id"
]
},
{
"field-id": 2,
"names": [
"data"
]
},
{
"field-id": 3,
"names": [
"location"
],
"fields": [
{
"field-id": 4,
"names": [
"latitude",
"lat"
]
},
{
"field-id": 5,
"names": [
"longitude",
"long"
]
}
]
}
]
Bemerkung
Feld-IDs müssen nicht aufeinanderfolgend sein, wenn eine Spalte (oder ein Feld in einer Spalte mit einem strukturierten Typ) keine entsprechende Namenszuordnung hat.
partition_specs¶
Jedes Objekt in der partition_specs-Spalte enthält eine spec-id, gefolgt von den Feldern für die Partitionsspezifikation. Jedes Feld ist ein OBJECT-Wert mit den folgenden Schlüssel-Wert-Paaren:
name: Der Name der Partition.transform: Die Transformation, die auf die Quellspalte angewendet wurde, um einen Partitionswert zu generieren. Dieser Wert bestimmt, wie Daten in Partitionen gruppiert werden.source-id: Der Bezeichner der ursprünglichen Tabellenspalte oder des entsprechenden Felds, die bzw. das für die Partitionierung verwendet wird.field-id: Die ID des Partitionsfeldes. Dieses Feld identifiziert ein Partitionsfeld und ist in einer Partitionsspezifikation eindeutig. Bei Iceberg V2-Tabellenmetadaten ist die Feld-ID allerdings für alle Partitionsspezifikationen eindeutig.
Beispiel:
[ {
"spec-id" : 0,
"fields" : [ {
"name" : "COL1",
"transform" : "identity",
"source-id" : 1,
"field-id" : 1000
}, {
"name" : "COL1_trunc_100",
"transform" : "truncate[100]",
"source-id" : 1,
"field-id" : 1001
}
]
} ]
Das Beispiel zeigt eine Partitionsspezifikation. Eine Tabelle kann jedoch mehrere Partitionsspezifikationen haben.
Beispiele¶
Zeigen Sie alle Iceberg-Tabellen an, deren Name mit glue beginnt und für die Sie über Berechtigungen zum Anzeigen im Schema tpch.public verfügen:
SHOW ICEBERG TABLES LIKE 'glue%' IN tpch.public;
Identifizieren von Iceberg-Tabellen mit SHOW TABLES¶
Die Ausgabe des SHOW TABLES-Befehls enthält eine Spalte, die anzeigt, ob eine Tabelle eine Iceberg-Tabelle ist. Diese Spalte wird zusätzlich zu den regulären SHOW TABLES-Ausgabespalten angezeigt.
Die Spalte hat den folgenden Namen und mögliche Werte:
Spaltenname |
Werte |
|---|---|
is_iceberg |
|