Abfragen & Kennzahlen
Sitzungskontext lesen
Vor einer Abfrage aktive Rolle und Umgebung prüfen.
SELECT CURRENT_ROLE(), CURRENT_WAREHOUSE(),
CURRENT_DATABASE(), CURRENT_SCHEMA();
Aktive Sekundärrollen können zusätzliche Rechte beitragen.
Abfragen & Kennzahlen
Neueste Zeile je Schlüssel
Fensterergebnis ohne zusätzliche Unterabfrage filtern.
SELECT customer_id, updated_at, record_id
FROM customer_versions
QUALIFY ROW_NUMBER() OVER (
PARTITION BY customer_id
ORDER BY updated_at DESC, record_id DESC
) = 1;
QUALIFY ist Snowflake-spezifisch, kein allgemeines ANSI-SQL-Muster. Tie-Breaker muss fachlich passen.
Abfragen & Kennzahlen
JSON-Pfad lesen
V ist eine VARIANT-Spalte in events.
SELECT v:customer.id::NUMBER AS customer_id,
v:status::STRING AS status
FROM events;
JSON-Schlüsselnamen sind case-sensitive; SQL-NULL und JSON-null unterscheiden.
Abfragen & Kennzahlen
Array entfalten
Positionen aus v:items in eigene Ergebniszeilen überführen.
SELECT e.v:id::NUMBER AS event_id,
f.index, f.value:sku::STRING AS sku
FROM events e, LATERAL FLATTEN(INPUT => e.v:items) f;
Die Zeilenanzahl ändert sich; nachgelagerte Summen auf passende Granularität prüfen.
Abfragen & Kennzahlen
Stand vor Änderung lesen
Query-ID der konkreten abgeschlossenen Änderung ersetzen.
SELECT * FROM orders
BEFORE(STATEMENT => '<UPDATE_QUERY_ID>');
Nur innerhalb wirksamer Retention. Historisch lesen korrigiert das aktuelle Objekt nicht.
Abfragen & Kennzahlen
Historischen Clone erzeugen
Eigenes neues Testobjekt aus einem früheren Stand erstellen.
CREATE TABLE orders_before CLONE orders
BEFORE(STATEMENT => '<UPDATE_QUERY_ID>');
Erstellt ein Objekt und kann Folgekosten verursachen. Clone ist kein vollständiger Disaster-Recovery-Plan.
Sicherheit & Rechte
Rollenrechte lesen
Direkte Rechte einer vorhandenen Rolle untersuchen.
SHOW GRANTS TO ROLE ANALYST;
Effektive Rechte zusätzlich über Rollenhierarchie und sekundäre Rollen bewerten.
Betrieb & Fehlersuche
Abfrageplan ohne Ausführung
Geplanten Zugriff vor einer teuren Abfrage ansehen.
EXPLAIN USING TEXT
SELECT customer_id, SUM(amount)
FROM orders GROUP BY customer_id;
EXPLAIN misst keine tatsächliche Laufzeit; Query Profile nach einer genehmigten Ausführung ergänzen.
Metadaten & Katalog
Spalten aus Metadaten lesen
Vor Klassifikation die sichtbaren Spalten inventarisieren.
SELECT table_schema, table_name, column_name, data_type
FROM information_schema.columns
WHERE table_schema = 'SALES'
ORDER BY table_name, ordinal_position;
INFORMATION_SCHEMA bezieht sich auf die aktuelle Datenbank; Sichtbarkeit hängt von Rechten ab.
Datenqualität
Ungültige Zahlen erkennen
Nicht konvertierbare Texte vor dem Modellaufbau finden.
SELECT raw_amount
FROM staged_orders
WHERE raw_amount IS NOT NULL
AND TRY_TO_DECIMAL(raw_amount, 18, 2) IS NULL;
TRY-Konvertierung liefert NULL bei Fehlern; dies muss von echtem Quell-NULL unterschieden werden.
Abfragen & Kennzahlen
Monatlich aggregieren
Tageswerte zu Monatswerten verdichten.
SELECT DATE_TRUNC('month', order_date) AS month_start,
SUM(amount) AS amount
FROM orders GROUP BY month_start ORDER BY month_start;
Zeitzone und Zeilenbedeutung vorab festlegen.
Datenqualität
Nenner schützen
Eine Marge ohne Division durch null berechnen.
SELECT SUM(profit) / NULLIF(SUM(revenue), 0) AS margin
FROM sales;
NULL-Ergebnis nicht ohne fachliche Entscheidung durch 0 ersetzen.
Betrieb & Fehlersuche
Testlauf zuordnen
Genehmigte Pilotabfragen mit einer Testreferenz markieren.
ALTER SESSION SET QUERY_TAG = 'GOV-DEMO-001/TEST-001';
SELECT COUNT(*) FROM orders;
ALTER SESSION UNSET QUERY_TAG;
Ändert Sitzungseinstellungen; keine Personenwerte oder Secrets in Tags schreiben.
Datenqualität
Geschäftsschlüssel prüfen
Modell-Eindeutigkeit ausdrücklich prüfen.
SELECT order_id, COUNT(*) AS n
FROM orders GROUP BY order_id HAVING COUNT(*) > 1;
Nicht aus einer deklarierten Schlüsseldefinition automatisch auf geprüfte Eindeutigkeit schließen.
Sicherheit & Rechte
Aktive Rollen nachvollziehen
Einen Rechtetest mit dokumentiertem Sitzungskontext durchführen.
SELECT CURRENT_USER(), CURRENT_ROLE(), CURRENT_SECONDARY_ROLES();
Eine Admin-Sitzung belegt keine Zugriffsbeschränkung für Leser.
Betrieb & Fehlersuche
Retention-Einstellung lesen
Vor Time-Travel-Planung die betroffene Tabelle prüfen.
SHOW PARAMETERS LIKE 'DATA_RETENTION_TIME_IN_DAYS' IN TABLE orders;
Effektiver Schutz hängt zusätzlich von Objekttyp, Edition und verfügbarem Verlauf ab.
Betrieb & Fehlersuche
Eigene letzte Abfragen lesen
Testreferenzen und Laufzeiten einer Sitzung finden.
SELECT query_id, execution_status, total_elapsed_time
FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY_BY_SESSION(RESULT_LIMIT => 20))
ORDER BY start_time DESC;
Sitzungsumfang beachten; keine accountweite Vollständigkeit ableiten.
Datenqualität
JSON-Parsingfehler finden
Ungültige JSON-Texte vor weiterer Verarbeitung prüfen.
SELECT raw_json FROM staged_events
WHERE raw_json IS NOT NULL AND TRY_PARSE_JSON(raw_json) IS NULL;
Leere oder nur aus Leerraum bestehende Eingaben können ebenfalls SQL-NULL liefern.
Metadaten & Katalog
Objektschlüssel sichtbar machen
Aufbau eines VARIANT-Objekts untersuchen.
SELECT OBJECT_KEYS(v) AS keys FROM events;
Das Beispiel setzt Objekte voraus. Verschachtelte Objekte und Arrays brauchen eigene Auswertung.
Sicherheit & Rechte
Rolle in Sitzung prüfen
Rollenbezug eines Rechtetests dokumentieren.
SELECT IS_ROLE_IN_SESSION('ANALYST') AS analyst_active;
Keine Aussage darüber, ob eine konkrete Policy wirksam schützt; Positiv- und Negativfall separat testen.