Spark SQL-opmaker
Maak Apache Spark SQL- en Databricks-queries op volgens de regels van Spark voor identifiers tussen backticks, strings met backslash-escapes, onbewerkte r''-strings en ${var}-substituties. CLUSTER BY, DISTRIBUTE BY en SORT BY blijven clausules, LATERAL VIEW en LEFT SEMI- of ANTI JOIN beginnen op nieuwe regels en SELECT * EXCEPT blijft op dezelfde regel. Niet-afgesloten strings en haakjes worden gemeld met regel- en kolomnummer, voor data-engineers.
Veelgestelde vragen
Welke Spark SQL-syntaxis wordt herkend?
Identifiers tussen backticks, strings tussen enkele en dubbele aanhalingstekens met backslash-escapes, onbewerkte r''-strings en binaire X''-literals worden herkend. ${var}-substituties, map['key']- en array[0]-indexeringen en ::-casts blijven intact.
Welke Spark-specifieke clausules worden ondersteund?
CLUSTER BY, DISTRIBUTE BY en SORT BY krijgen net als ORDER BY een eigen regel. LATERAL VIEW, LATERAL VIEW OUTER, LEFT SEMI JOIN en LEFT ANTI JOIN beginnen net als joins op nieuwe regels.
Hoe zit het met SELECT * EXCEPT?
EXCEPT direct na een ster blijft op dezelfde regel staan. Zo wordt SELECT * EXCEPT (col) niet verward met de setoperator EXCEPT.
Blijven ${var}-plaatsaanduidingen behouden?
Ja. Substituties zoals ${env} of ${hivevar:date} blijven precies zoals geschreven, inclusief de dubbele punt erin.
Ondersteunt het MERGE INTO?
Ja. De vertakkingen WHEN MATCHED en WHEN NOT MATCHED van Delta Lake MERGE INTO-statements beginnen op nieuwe regels.
Kan ik SQL uit een PySpark-string plakken?
Ja, plak de SQL-tekst zelf, zonder de omringende Python-aanhalingstekens. Het resultaat kun je terugplakken in spark.sql() of in een notebookcel.
Verandert de hoofdlettergebruik van trefwoorden?
Nee. Trefwoorden en namen behouden de schrijfwijze die je hebt gebruikt. Alleen witruimte en regeleinden veranderen.
Welke fouten worden gedetecteerd?
Niet-afgesloten strings, backtick-identifiers, subscripts en blokcommentaar, en niet-gebalanceerde haakjes, elk met regel- en kolomnummer. Er wordt niets op een cluster uitgevoerd.
Hoe groot mag de invoer zijn?
Tot 1 MB per verzoek en 128 KB per statement. Notebookexports met veel statements worden statement voor statement opgemaakt.
Kan ik de inspringing kiezen en wordt mijn SQL opgeslagen?
Gebruik 2 of 4 spaties of tabs. De SQL wordt alleen in het geheugen opgemaakt en nooit opgeslagen.