Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Athena-Engine-Version 2
Athena-Engine-Version 2 führte die folgenden Änderungen ein.
Neue Features und Verbesserungen
-
EXPLAIN und EXPLAIN ANALYZE – Sie können jetzt die
EXPLAIN
-Anweisung in Athena verwenden, um die Ausführungspläne für Ihre SQL-Abfragen anzuzeigen. Verwenden SieEXPLAIN ANALYZE
, um den verteilten Ausführungsplan für Ihre SQL-Abfragen und die Kosten für jeden Vorgang anzuzeigen. Weitere Informationen finden Sie unter Verwenden von EXPLAIN und EXPLAIN ANALYZE in Athena. -
Verbundabfragen – Verbundabfragen werden in Athena-Engine-Version 2 unterstützt. Weitere Informationen finden Sie unter Nutzung von Amazon-Athena-Verbundabfrage.
-
Räumliche Funktionen – Mehr als 25 räumliche Funktionen wurden hinzugefügt. Weitere Informationen finden Sie unter Neue Geodaten-Funktionen in Athena-Engine-Version 2.
-
Verschachteltes Schema – Support für das Lesen verschachtelter Schemas hinzugefügt, wodurch die Kosten gesenkt werden.
-
Vorbereitete Anweisungen – Verwenden Sie vorbereitete Anweisungen für die wiederholte Ausführung derselben Abfrage mit unterschiedlichen Abfrageparametern. Eine vorbereitete Anweisung enthält Platzhalterparameter, deren Werte Sie zur Laufzeit übergeben. Vorbereitete Anweisungen verhindern SQL-Injections-Angriffe. Weitere Informationen finden Sie unter Verwenden von parametrisierten Abfragen.
-
Support der Schema-Evolution – Support für Schema-Evolution wurde hinzugefügt, um Daten im Parquet-Format zu unterstützen.
-
Support für das Lesen von Array-, Map- oder Zeilentypspalten von Partitionen, bei denen sich das Partitionsschema vom Tabellenschema unterscheidet, wurde hinzugefügt. Dies kann auftreten, wenn das Tabellenschema nach dem Erstellen der Partition aktualisiert wurde. Die geänderten Spaltentypen müssen kompatibel sein. Bei Zeilentypen können nachfolgende Felder hinzugefügt oder gelöscht werden, aber die entsprechenden Felder (nach Ordinalzahl) müssen denselben Namen haben.
-
ORC-Dateien können nun Strukturspalten mit fehlenden Feldern enthalten. Dadurch kann das Tabellenschema geändert werden, ohne die ORC-Dateien neu zu schreiben.
-
ORC-Strukturspalten werden nun nach Namen und nicht nach Ordinalnamen zugeordnet. Dadurch werden fehlende oder zusätzliche Strukturfelder in der ORC-Datei korrekt behandelt.
-
-
SQL-OFFSET – Die SQL-
OFFSET
-Klausel wird jetzt inSELECT
-Anweisungen unterstützt. Weitere Informationen finden Sie unter SELECT. -
UNLOAD-Anweisung – Sie können die
UNLOAD
-Anweisung verwenden, um die Ausgabe einerSELECT
-Abfrage in die Formate PARQUET, ORC, AVRO und JSON zu schreiben. Weitere Informationen finden Sie unter UNLOAD.
Verbesserungen bei Gruppierung, Verknüpfung und Unterabfrage
-
Komplexe Gruppierung – Support für komplexe Gruppierungsoperationen wurde hinzugefügt.
-
Korrelierte Unterabfragen – Support für korrelierte Unterabfragen in
IN
-Prädikaten und für korrelierte Unterabfragen, die Zwang erfordern, wurde hinzugefügt. -
CROSS-JOIN – Unterstützung für
CROSS JOIN
gegenLATERAL
abgeleitete Tabellen hinzugefügt. -
GROUPING SETS – Unterstützung für
ORDER BY
-Klauseln in Aggregationen für Abfragen hinzugefügt, dieGROUPING SETS
verwenden. -
Lambda Ausdrücke – Unterstützung für die Dereferenzierung von Zeilenfeldern in Lambda-Ausdrücken hinzugefügt.
-
Null-Werte in Semijoins – Unterstützung für Nullwerte auf der linken Seite eines Semijoin hinzugefügt (dh ein
IN
-Prädikat mit Unterabfragen). -
Räumliche Joins – Unterstützung für Räumliche Broadcast-Joins und Räumliche linke Joins hinzugefügt.
-
Auf Festplatte auslagern – Für speicherintensive Vorgänge
INNER JOIN
- undLEFT JOIN
-Operationen lagert Athena Zwischenergebnisse auf die Festplatte aus. Dies ermöglicht die Ausführung von Abfragen, die große Mengen an Speicher benötigen.
Erweiterungen von Datentypen
-
INT für INTEGER – Unterstützung für
INT
hinzugefügt als Alias für denINTEGER
-Datentyp. -
Intervall-Typen – Unterstützung für das Umwandeln in
INTERVAL
-Typen hinzugefügt. -
IPADDRESS – Es wurde ein neuer
IPADDRESS
Typ hinzugefügt, um IP-Adressen in DML-Abfragen darzustellen. Unterstützung für die Umwandlung zwischenVARBINARY
-Typ undIPADDRESS
-Typ DerIPADDRESS
Typ wird in DDL-Abfragen nicht erkannt. -
IS DISTINCT FROM –
IS DISTINCT FROM
-Unterstützung für dieJSON
- undIPADDRESS
-Typen hinzugefügt. -
Nullgleichsprüfungen – Gleichheitsüberprüfungen auf Nullwerte in
ARRAY
-,MAP
- undROW
-Datenstrukturen werden jetzt unterstützt. Der AusdruckARRAY ['1', '3', null] = ARRAY ['1', '2', null]
gibt beispielsweisefalse
zurück. Zuvor gab ein null-Element die FehlernachrichtVergleich nicht unterstützt
zurück. -
Zeilentyp-Zwang – Zwang zwischen Zeilentypen unabhängig von Feldnamen ist jetzt erlaubt. Bisher war ein Zeilentyp nur dann auf einen anderen umsetzbar, wenn der Feldname im Quelltyp mit dem Zieltyp übereinstimmte oder wenn der Zieltyp einen anonymen Feldnamen hatte.
-
Zeitsubtraktion – Implementiert Subtraktion für alle
TIME
- undTIMESTAMP
-Typen. -
Unicode – Unterstützung für Escape-Unicode-Sequenzen in Zeichenfolgen-Literalen hinzugefügt.
-
Verkettung von VARBINARY – Unterstützung für die Verkettung von
VARBINARY
-Werten hinzugefügt.Fensterwertfunktionen – Fensterwertfunktionen unterstützen jetzt
IGNORE NULLS
undRESPECT NULLS
.
Zusätzliche Eingabetypen für Funktionen
Die folgenden Funktionen akzeptieren jetzt zusätzliche Eingabetypen. Weitere Informationen zu jeder Funktion finden Sie unter dem entsprechenden Link zur Presto-Dokumentation.
-
approx_distinct () – Die approx_distinct ()
unterstützt jetzt die folgenden Typen: INTEGER
,SMALLINT
,TINYINT
,DECIMAL
,REAL
,DATE
,TIMESTAMP
,TIMESTAMP WITH TIME ZONE
,TIME
,TIME WITH TIME ZONE
,IPADDRESS
undCHAR
. -
Avg(), sum() – Die avg()-
und sum()- Aggregatfunktionen unterstützen nun den INTERVAL
-Datentyp. -
Lpad(), rpad() – Die lpad-
und rpad- Funktionen funktionieren jetzt auf VARBINARY
-Eingaben. -
Min(), max() – Die min()-
und max()- Aggregationsfunktionen erlauben nun unbekannte Eingabetypen zur Abfrageanalyse, sodass Sie die Funktionen mit NULL
-Literalen verwenden können. -
regexp_replace () – Variante der regexp_replace ()
-Funktion hinzugefügt, die eine Lambda-Funktion für jede Ersetzung ausführen kann. -
Sequence() –
DATE
-Varianten für die sequence()-Funktion hinzugefügt, einschließlich Variante mit einer impliziten Schrittweite von einem Tag. -
ST_Area() – Die Geodatenfunktion ST_Area()
unterstützt jetzt alle Geometrietypen. -
Substr() – Die substr()
-Funktion funktioniert jetzt auf VARBINARY
-Eingaben. -
zip_with() – Arrays mit nicht übereinstimmender Länge können jetzt mit zip_with()
verwendet werden. Fehlende Positionen werden mit null gefüllt. Zuvor wurde ein Fehler ausgelöst, wenn Arrays unterschiedlicher Länge übergeben wurden. Diese Änderung kann es schwierig machen, zwischen Werten, die ursprünglich null waren, von Werten zu unterscheiden, die hinzugefügt wurden, um die Arrays auf die gleiche Länge aufzufüllen.
Erweiterte Funktionen
Die folgende Liste enthält Funktionen, die ab Version 2 der Athena-Engine neu sind. Die Liste enthält keine räumlichen Funktionen. Eine Liste der Geodatenfunktionen finden Sie unter Neue Geodaten-Funktionen in Athena-Engine-Version 2.
Weitere Informationen zu jeder Funktion finden Sie unter dem entsprechenden Link zur Presto-Dokumentation.
Aggregationsfunktionen
Array-Funktionen und -Operatoren
array_sort ()
Binäre Funktionen und Operatoren
Datums- und Zeitfunktionen und -Operatoren
Zuordnungs-Funktionen und -Operatoren
Mathematische Funktionen und Operatoren
Quantildigest-Funktionen
Quantildigest-Funktionenqdigest
-Quantil-Digest-Typ hinzugefügt.
Zeichenfolgen-Funktionen und -Operatoren
Leistungsverbesserungen
Die Leistung der folgenden Features hat sich in Athena-Engine-Version 2 verbessert.
Abfrageleistung
-
Broadcast-Beitrittleistung – Verbesserte Broadcast-Beitrittleistung durch Anwenden des dynamischen Partitionsschnitts im Worker-Knoten.
-
Tabellen mit Buckets – Verbesserte Leistung beim Schreiben in Bucket-Tabellen, wenn die zu schreibenden Daten bereits entsprechend partitioniert sind (z. B. wenn die Ausgabe von einem Bucket-Boot stammt).
-
DISTINCT – Verbesserte Leistung für einige Abfragen, die
DISTINCT
verwenden.Dynamische Filterung und Partitionsbereinigung – Verbesserungen erhöhen die Leistung und reduzieren die bei Abfragen gescannte Datenmenge.
-
Filter- und Projektionsoperationen – Filter- und Projektionsoperationen werden nun immer nach Möglichkeit von Spalten verarbeitet. Die Engine nutzt automatisch Wörterbuchkodierungen, wo sie wirksam sind.
-
Sammelbörsen – Verbesserte Leistung für Abfragen mit Sammelbörsen.
-
Globale Aggregationen – Verbesserte Leistung für einige Abfragen, die gefilterte globale Aggregationen durchführen.
-
GROUPING SETS, CUBE, ROLLUP – Verbesserte Leistung für Abfragen mit
GROUPING SETS
,CUBE
oderROLLUP
, mit dem Sie mehrere Sätze von Spalten in einer einzelnen Abfrage aggregieren können. -
Sehr selektive Filter – Die Leistung von Anfragen mit hochselektiven Filtern wurde verbessert.
-
Operationen JOIN und AGREGATE – Die Leistung von
JOIN
undAGGREGATE
-Operationen wurde verbessert. -
LIKE – Die Leistung von Abfragen, die
LIKE
-Prädikate für die Spalten voninformation_schema
-Tabellen verwenden, wurde verbessert. -
ORDER BY UND LIMIT – Verbesserte Pläne, Leistung und Speichernutzung für Abfragen mit
ORDER BY
undLIMIT
, um unnötigen Datenaustausch zu vermeiden. -
ORDER BY –
ORDER BY
-Operationen werden jetzt standardmäßig verteilt, sodass größereORDER BY
-Klauseln verwendet werden können. -
Konvertierungen von Zeilentypen – Verbesserte Leistung bei der Konvertierung zwischen
ROW
-Typen. -
Strukturelle Typen – Verbesserte Leistung von Abfragen, die Strukturtypen verarbeiten und Scan-, Join-, Aggregations- oder Tabellenschreibvorgänge enthalten.
-
Tabellen-Scans – Eine Optimierungsregel wurde eingeführt, um in bestimmten Fällen doppelte Tabellenscans zu vermeiden.
-
UNION – Verbesserte Leistung für
UNION
-Abfragen.
Abfrageplanungsleistung
-
Planungsleistung – Verbesserte Planungsleistung für Anfragen, die mehrere Tabellen mit einer großen Anzahl von Spalten verknüpfen.
-
Prädikatsauswertungen – Verbesserte Leistung bei der Prädikatauswertung während des Prädikaten-Pushdowns in der Planung.
-
Prädikat Pushdown-Unterstützung für Umwandlung – Prädikat-Pushdown für das Prädikat
<column>
IN
<values list>
unterstützen, bei dem Werte in der Werteliste umgewandelt werden müssen, um dem Spaltentyp zu entsprechen. -
Prädikatinferenz und Pushdown – Prädikatinferenz und Pushdown erweitert für Abfragen, die ein Prädikat
<symbol>
IN
<subquery>
verwenden. -
Zeitüberschreitungen – Es wurde ein Fehler behoben, der in seltenen Fällen Timeouts für die Abfrageplanung verursachen konnte.
Join-Leistung
-
Joins mit Map-Spalten – Verbesserte Leistung von Joins und Aggregationen, die Map-Spalten enthalten.
-
Joins mit ausschließlich Ungleichheitsbedingungen – Verbesserte Leistung von Joins mit ausschließlich Ungleichheitsbedingungen durch Verwendung eines verschachtelten Loop-Joins anstelle eines Hash-Joins.
-
Externe Joins – Der Join-Verteilungstyp wird jetzt automatisch für Abfragen mit äußeren Joins ausgewählt.
-
Bereich über Funktions-Joins – Verbesserte Leistung von Joins, bei denen die Bedingung ein Bereich über einer Funktion ist (z. B.
a JOIN b ON b.x < f(a.x) AND b.x > g(a.x)
). -
Spill-to-disk – spill-to-disk Verwandte Fehler und Speicherprobleme wurden behoben, um die Leistung zu verbessern und Speicherfehler in -
JOIN
Operationen zu reduzieren.
Unterabfrageleistung
-
Korrelierte EXIST-Unterabfragen – Verbesserte Leistung von korrelierten
EXISTS
-Unterabfragen. -
Korrelierte Unterabfragen mit Gleichheiten – Verbesserte Unterstützung für korrelierte Unterabfragen, die Gleichheitsprädikate enthalten.
-
Korrelierte Unterabfragen mit Ungleichheiten – Verbesserte Leistung für korrelierte Unterabfragen, die Ungleichheiten enthalten.
-
Count(*) Aggregationen über Unterabfragen – Verbesserte Leistung von
count(*)
-Aggregationen über Unterabfragen mit bekannter konstanter Kardinalität. -
Ausbreitung des äußeren Abfragefilters – Verbesserte Leistung korrelierter Unterabfragen, wenn Filter aus der äußeren Abfrage an die Unterabfrage weitergegeben werden können.
Funktions-Leistung
-
Aggregationsfensterfunktionen – Verbesserte Leistung von Aggregatfensterfunktionen.
-
element_at () – Verbesserte Leistung von
element_at()
, für Maps mit konstanter Zeit anstatt proportional zur Größe der Map. -
Grouping() – Verbesserte Leistung für Abfragen mit
grouping()
. -
JSON-Umwandlung – Verbesserte Leistung bei der Umwandlung von
JSON
- aufARRAY
- oderMAP
-Typen. -
Rückgabefunktionen – Verbesserte Leistung von Funktionen, die Karten zurückgeben.
-
Map-to-map -Umwandlung – Die Leistung von map-to-map Casting wurde verbessert.
-
Min() und max() – Die
min()
- undmax()
-Funktionen wurden optimiert, um unnötige Objekterstellung zu vermeiden und somit den Garbage-Collection-Overhead zu reduzieren. -
row_number () – Verbesserte Leistung und Speichernutzung für Abfragen mit
row_number()
gefolgt von einem Filter für die generierten Zeilennummern. -
Fensterfunktionen – Verbesserte Leistung von Abfragen, die Fensterfunktionen mit identischen
PARTITION BY
- undORDER BY
-Klauseln. -
Fensterfunktionen – Verbesserte Leistung bestimmter Fensterfunktionen (z. B.
LAG
), die ähnliche Spezifikationen haben.
Räumliche Leistung
-
Geometrieserialisierung – Die Serialisierungsleistung von Geometriewerten wurde verbessert.
-
Räumliche Funktionen – Die Leistung von
ST_Intersects()
,ST_Contains()
,ST_Touches()
,ST_Within()
,ST_Overlaps()
,ST_Disjoint()
,transform_values()
,ST_XMin()
,ST_XMax()
,ST_YMin()
,ST_YMax()
,ST_Crosses()
undarray_intersect()
wurde verbessert. -
ST_Distance () – Verbesserte Leistung von Join-Abfragen, die die
ST_Distance()
-Funktion verwenden. -
ST_Intersection() – Optimierte
ST_Intersection()
-Funktion für Rechtecke, die an Koordinatenachsen ausgerichtet sind (z. B. Polygone, die von derST_Envelope()
- undbing_tile_polygon()
-Funktionen produziert wurden).
JSON-bezogene Verbesserungen
Map-Funktionen
-
Verbesserte Leistung von Map tiefgestellt von
O(n)
aufO(1)
in allen Fällen. Bisher nutzten nur Karten, die von bestimmten Funktionen und Lesern erstellt wurden, diese Verbesserung. -
Funktionen
map_from_entries()
undmap_entries()
hinzugefügt.
Umwandlung
-
Es wurde die Möglichkeit hinzugefügt, in
JSON
vonREAL
,TINYINT
oderSMALLINT
umzuwandeln. -
Sie können jetzt
JSON
aufROW
umwandeln, selbst wenn dieJSON
enthält nicht jedes Feld in derROW
aus. -
Verbesserte Leistung von
CAST(json_parse(...) AS ...)
. -
Verbesserte Leistung bei der Umwandlung von
JSON
- aufARRAY
- oderMAP
-Typen.
Neue JSON-Funktionen
Abwärtskompatible Änderungen
Unterbrechende Änderungen umfassen Fehlerbehebungen, Änderungen an räumlichen Funktionen, ersetzte Funktionen und die Einführung von Grenzwerten. Verbesserungen bei der ANSI-SQL-Konformität können Abfragen brechen, die von nicht standardmäßigem Verhalten abhängen.
Fehlerbehebungen
Die folgenden Änderungen korrigieren Verhaltensprobleme, die dazu führten, dass Abfragen erfolgreich ausgeführt wurden, aber mit ungenauen Ergebnissen.
-
fixed_len_byte_array Parquet-Spalten werden jetzt als DECIMAL akzeptiert – Abfragen von Parquet-Spalten vom Typ
fixed_len_byte_array
sind erfolgreich und geben korrekte Werte zurück, wenn sie im Parquet-Schema alsDECIMAL
annotiert sind. Fragt abfixed_len_byte_array
-Spalten ohne dieDECIMAL
-Notation schlägt mit einem Fehler fehl. Zuvor wurden Abfragen auffixed_len_byte_array
-Spalten ohne die DECIMAL-Anmerkung erfolgreich, aber unverständliche Werte zurückgegeben. -
json_parse() ignoriert keine nachgestellten Zeichen mehr – Zuvor wurden Eingaben wie
[1,2]abc
würde erfolgreich als[1,2]
geparst. Die Verwendung nachgestellter Zeichen erzeugt nun die Fehlermeldung'[1, 2] abc' kann nicht in JSON konvertiert werden
. -
Round() Dezimalgenauigkeit korrigiert –
round(x, d)
rundetx
jetzt korrekt, wennx
ein DEZIMAL ist oder wennx
ein DEZIMAL mit Skala 0 undd
eine negative Ganzzahl ist. Zuvor trat in diesen Fällen keine Rundung auf. -
round(x, d) and truncate(x, d) – Der Parameter
d
in der Signatur von Funktionenround(x, d)
undtruncate(x, d)
ist jetzt vom TypINTEGER
. Zuvor konnted
vom TypBIGINT
sein. -
Map() mit doppelten Schlüsseln –
map()
löst jetzt einen Fehler bei doppelten Schlüsseln aus, anstatt eine beschädigte Karte im Hintergrund zu erzeugen. Abfragen, die derzeit Kartenwerte mit doppelten Schlüsseln erstellen, schlagen jetzt mit einem Fehler fehl. -
map_from_entries() löst einen Fehler mit Nulleinträgen aus –
map_from_entries()
löst nun einen Fehler aus, wenn das Eingabe-Array einen Nulleintrag enthält. Abfragen, die eine Karte erstellen, indemNULL
als Wert übergeben wird, schlagen jetzt fehl. -
Tabellen – Tabellen mit nicht unterstützten Partitionstypen können nicht mehr erstellt werden.
-
Verbesserte numerische Stabilität in statistischen Funktionen – Die numerische Stabilität der statistischen Funktionen
corr()
,covar_samp()
,regr_intercept()
undregr_slope()
wurde verbessert. -
TIMESTAMP-Präzision, die in Parquet definiert ist, wird jetzt eingehalten – Die Präzision von
TIMESTAMP
-Werten und die Genauigkeit, die für dieTIMESTAMP
im Parquet-Schema muss nun übereinstimmen. Nicht übereinstimmende Präzisionen führen zu falschen Zeitstempeln. -
Zeitzoneninformation – Zeitzoneninformationen werden jetzt mithilfe des java.time
-Pakets des Java 1.8 SDK berechnet. -
SUMME der Datentypen INTERVAL_DAY_TO_SECOND und INTERVAL_YEAR_TO_MONTH – Sie können
SUM(NULL)
nicht mehr direkt verwenden. UmSUM(NULL)
zu benutzen, wandeln SieNULL
in einen Datentyp wieBIGINT
,DECIMAL
,REAL
,DOUBLE
,INTERVAL_DAY_TO_SECOND
oderINTERVAL_YEAR_TO_MONTH
um.
Änderungen an Geodatenfunktionen
Folgende Änderungen an räumlichen Funktionen wurden vorgenommen.
-
Änderungen der Funktionsnamen – Einige Funktionsnamen haben sich geändert. Weitere Informationen finden Sie unter Änderungen des Geodaten-Funktionennamens in Athena-Engine-Version 2.
-
VARBINARY –
VARBINARY
wird nicht mehr direkt für die Eingabe in Geodatenfunktionen unterstützt. Um beispielsweise die Fläche einer Geometrie direkt zu berechnen, muss die Geometrie nun entweder imVARCHAR
- oder imGEOMETRY
-Format eingegeben werden. Die Problemumgehung besteht darin, Transformationsfunktionen zu verwenden, wie in den folgenden Beispielen.-
Um
ST_area()
zum Berechnen der Fläche für dieVARBINARY
-Eingabe im Well-Known-Binary-(WKB)-Format zu verwenden, übergeben Sie die Eingabe zuerst anST_GeomFromBinary()
, zum Beispiel:ST_area(ST_GeomFromBinary(
<wkb_varbinary_value>
)) -
Um
ST_area()
zum Berechnen der Fläche für dieVARBINARY
-Eingabe im Legacy-Binärformat zu verwenden, übergeben Sie dieselbe Eingabe zuerst an dieST_GeomFromLegacyBinary()
-Funktion, zum Beispiel:ST_area(ST_GeomFromLegacyBinary(
<legacy_varbinary_value>
))
-
-
ST_ExteriorRing() und ST_Polygon() – ST_ExteriorRing() und akzeptieren ST_Polygon() jetzt nur Polygone als Eingaben. Zuvor akzeptierten diese Funktionen fälschlicherweise andere Geometrien.
-
ST_Distance() – Wie von der SQL/MM-Spezifikation
erforderlich, gibt die ST_Distance()-Funktion jetzt NULL
zurück, wenn eine der Eingaben eine leere Geometrie ist. Zuvor wurdeNaN
zurückgegeben.
ANSI-SQL-Compliance
Die folgenden Syntax- und Verhaltensprobleme wurden entsprechend dem ANSI-SQL-Standard korrigiert.
-
Cast()-Operationen – Cast()-Operationen von REAL oder DOUBLE nach DECIMAL entsprechen nun dem SQL-Standard. Zum Beispiel hat
cast (double '100000000000000000000000000000000' as decimal(38))
zuvor100000000000000005366162204393472
zurückgegeben, jetzt aber100000000000000000000000000000000
. -
JOIN ... USING –
JOIN ... USING
entspricht jetzt der Standard-SQL-Semantik. Zuvor mussteJOIN ... USING
den Tabellennamen in Spalten qualifizieren, und die Spalte aus beiden Tabellen war in der Ausgabe vorhanden. Tabellenqualifikationen sind jetzt ungültig und die Spalte ist nur einmal in der Ausgabe vorhanden. -
Literale vom Typ ROW entfernt – Das Literalformat des ROW-Typs
ROW<int, int>(1, 2)
wird nicht mehr unterstützt. Verwenden Sie stattdessen dieROW(1 int, 2 int)
-Syntax. -
Semantik für gruppierte Aggregation – Gruppierte Aggregationen verwenden
IS NOT DISTINCT FROM
-Semantik statt Gleichheitssemantik. Gruppierte Aggregationen geben jetzt korrekte Ergebnisse zurück und zeigen eine verbesserte Leistung beim Gruppieren nachNaN
-Gleitkommawerten. Gruppierung auf Karten-, Listen- und Zeilentypen, die Nullen enthalten, wird unterstützt. -
Typen mit Anführungszeichen sind nicht mehr zulässig – Gemäß ANSI-SQL-Standard dürfen Datentypen nicht mehr in Anführungszeichen eingeschlossen werden.
SELECT "date" '2020-02-02'
ist beispielsweise keine gültige Abfrage mehr. Verwenden Sie stattdessen dieSELECT date '2020-02-02'
-Syntax. -
Zugriff auf anonyme Zeilenfelder – Auf anonyme Zeilenfelder kann nicht mehr mit der Syntax [
.field0, .field1, ...
] zugegriffen werden. -
Komplexe Gruppierungsvorgänge – Die komplexen Gruppierungsoperationen
GROUPING SETS
,CUBE
undROLLUP
unterstützen keine Gruppierung von Ausdrücken, die aus Eingabespalten bestehen. Es sind nur Spaltennamen zulässig.
Ersetzte Funktionen
Die folgenden Funktionen werden nicht mehr unterstützt und wurden durch Syntax ersetzt, die dieselben Ergebnisse liefert.
-
Information_schema. __internal_partitions__ – Die Verwendung von
__internal_partitions__
wird in der Athena-Engine Version 2 nicht mehr unterstützt. Verwenden Sie für eine äquivalente SyntaxSELECT * FROM "
oder<table_name>
$partitions"SHOW PARTITIONS
. Weitere Informationen finden Sie unter Auflisten von Partitionen für eine bestimmte Tabelle. -
Ersetzte Geodatenfunktionen – Eine Liste der Geodatenfunktionen, deren Namen sich geändert haben, finden Sie unter Änderungen des Geodaten-Funktionennamens in Athena-Engine-Version 2.
Einschränkungen
Die folgenden Grenzwerte wurden in Athena-Engine-Version 2 eingeführt, um sicherzustellen, dass Abfragen aufgrund von Ressourcenbeschränkungen nicht fehlschlagen. Diese Grenzwerte sind von Benutzern nicht konfigurierbar.
-
Anzahl der Ergebniselemente – Die Anzahl der Ergebniselemente
n
ist für die folgenden Funktionen auf 10.000 oder weniger beschränkt:min(col, n)
,max(col, n)
,min_by(col1, col2, n)
undmax_by(col1, col2, n)
. -
GROUPING SETS – Die maximale Anzahl von Slices in einem Gruppierungssatz ist 2048.
-
Maximale Zeilenlänge der Textdatei – Die standardmäßige maximale Zeilenlänge für Textdateien beträgt 200 MB.
-
Sequenzfunktion maximale Ergebnisgröße – Die maximale Ergebnisgröße einer Sequenzfunktion beträgt 50000 Einträge. Zum Beispiel ist
SELECT sequence(0,45000,1)
erfolgreich, aberSELECT sequence(0,55000,1)
schlägt mit der Fehlermeldung fehl.Das Ergebnis der Sequenzfunktion darf nicht mehr als 50000 Einträge haben
. Diese Beschränkung gilt für alle Eingabetypen für Sequenzfunktionen, auch für Zeitstempel.