SELECT

Hiermee worden resultatensets opgehaald uit een of meer tabellen.

Syntax

[ WITH with_query [ , ... ] ]
select_statement [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select_statement, ... ]
  [ ORDER BY { expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [ , ... ] } ]
  [ SORT BY { expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [ , ... ] } ]
  [ CLUSTER BY { expression [ , ... ] } ]
  [ DISTRIBUTE BY { expression [, ... ] } ]
  [ WINDOW clause ]
  [ LIMIT clause ]

Terwijl select_statement is gedefinieerd als

SELECT [ hints , ... ] [ ALL | DISTINCT ] { [ named_expression | regex_column_names ] [ , ... ] }
  FROM { from_item [ , ... ] }
  [ PIVOT clause ]
  [ LATERAL VIEW clause ] [ ... ]
  [ WHERE boolean_expression ]
  [ GROUP BY expression [ , ... ] ]
  [ HAVING boolean_expression ]

Parameters

  • with_query

    Een of meer algemene tabelexpressies vóór het hoofdqueryblok. Er kan later in de -component naar deze tabelexpressie worden verwezen. Dit is handig om herhaalde subqueryblokken in de -component te abstraheeren FROM en de leesbaarheid van de query te verbeteren.

  • Hints

    Hints helpen de Spark-optimizer betere planningsbeslissingen te nemen. Spark ondersteunt hints die invloed hebben op de selectie van joinstrategieën en het opnieuw opdelen van de gegevens.

  • ALL

    Selecteer alle overeenkomende rijen uit de relatie. Standaard ingeschakeld.

  • VERSCHILLENDE

    Selecteer alle overeenkomende rijen uit de relatie na het verwijderen van dubbele waarden in resultaten.

  • named_expression

    Een expressie met een toegewezen naam. Geeft een kolomexpressie aan.

    Syntaxis:

  • from_item

    Een bron van invoer voor de query. Een van de volgende producten:

    • Tabel-id

      • [database_name.] table_name: Een tabelnaam, eventueel gekwalificeerd met een databasenaam.
      • delta.`<path-to-table>`: De locatie van een bestaande Delta-tabel.

      U kunt een time travel opgeven met TIMESTAMP AS OF behulp van , of VERSION AS OF@ syntaxis na een tabelrelatie. Zie Query uitvoeren op een oudere momentopname van een tabel (time travel) voor meer informatie.

    • JOIN

      Combineert twee of meer relaties met behulp van een join.

    • BESTAND

      Een query uitvoeren op een bestand met een opgegeven indeling rechtstreeks met SQL.

    • Tabelwaardefunctie (TVF)

      Roept een tabelfunctie aan.

    • Inlinetabel

      Hiermee definieert u een inlinetabel.

    • Subquery

    • [ LATERAL ] ( query )

      Berekent een relatie met behulp van een query.

      LATERAL

      Notitie

      Beschikbaar in Databricks Runtime 9.0 en hoger.

      U kunt het LATERAL trefwoord opgeven waarmee de query kan verwijzen naar kolommen in de voorgaande from_item s.

  • PIVOT

    Wordt gebruikt voor gegevensperspectief; U kunt de geaggregeerde waarden op basis van een specifieke kolomwaarde krijgen.

  • LATERALE WEERGAVE

    Wordt gebruikt in combinatie met generatorfuncties zoals , waarmee een virtuele tabel met EXPLODE een of meer rijen wordt gegenereerd. LATERALE WEERGAVE past de rijen toe op elke oorspronkelijke uitvoerrij.

  • WAAR

    Filtert het resultaat van FROM de -component op basis van de opgegeven predicaten.

  • GROUP BY

    De expressies die worden gebruikt om de rijen te groeperen. Dit wordt gebruikt in combinatie met statistische functies ( , , , , , ) om rijen te groeperen op basis van de MIN groeperingsexpressie en aggregatiewaarden MAX in elke COUNTSUMAVG groep. Wanneer een FILTER component is gekoppeld aan een statistische functie, worden alleen de overeenkomende rijen doorgegeven aan die functie.

  • HAVING

    De predicaten waarmee de rijen worden GROUP BY gefilterd die door worden geproduceerd. De HAVING component wordt gebruikt om rijen filteren nadat de groepering is uitgevoerd. Als u HAVING opgeeft zonder GROUP BY , duidt dit op een zonder GROUP BY groeperingsexpressie (globale aggregatie).

  • ORDER BY

    Een volgorde van de rijen van de volledige resultatenset van de query. De uitvoerrijen zijn geordend over de partities. Deze parameter sluiten elkaar wederzijds uit met SORT BY , CLUSTER BYen DISTRIBUTE BY kunnen niet samen worden opgegeven.

  • SORTEREN OP

    Een volgorde waarmee de rijen binnen elke partitie worden geordend. Deze parameter is wederzijds exclusief met ORDER BY en en kan niet samen worden CLUSTER BY opgegeven.

  • CLUSTER BY

    Een set expressies die wordt gebruikt om de rijen opnieuw tepartitioneren en sorteren. Het gebruik van deze component heeft hetzelfde effect van het gebruik DISTRIBUTE BY van en SORT BY samen.

  • DISTRIBUEREN OP

    Een set expressies waarmee de resultaatrijen opnieuw worden gepartitioneerd. Deze parameter is wederzijds exclusief met ORDER BY en en kan niet samen worden CLUSTER BY opgegeven.

  • VENSTER

    Definieert benoemde vensterspecificaties die kunnen worden gedeeld door meerdere Window-functies in de .

  • BEPERKEN

    Het maximum aantal rijen dat kan worden geretourneerd door een instructie of subquery. Deze component wordt meestal gebruikt in combinatie met ORDER BY om een deterministisch resultaat te produceren.

  • boolean_expression

    Een expressie die resulteert in een resultaattype Boolean . U kunt twee of meer expressies samen met behulp van de logische operators ( AND , OR ).

  • expression

    Een combinatie van een of meer waarden, operators en SQL functies die als een waarde worden geëvalueerd.

Selecteren in Delta-tabel

Naast de standaardopties SELECT ondersteunen Delta-tabellen de time travel die in deze sectie worden beschreven. Zie Een query uitvoeren op een oudere momentopname van een tabel (time travel) voor meer informatie.

AS OF Syntaxis

SELECT * FROM table_identifier TIMESTAMP AS OF timestamp_expression
SELECT * FROM table_identifier VERSION AS OF version

waar

  • timestamp_expression kan een van de volgende zijn:
    • '2018-10-18T22:15:12.013Z', dat wil zeggen, een tekenreeks die kan worden gecast naar een tijdstempel
    • cast('2018-10-18 13:36:32 CEST' as timestamp)
    • '2018-10-18', dat wil zeggen, een datumreeks
    • In Databricks Runtime 6.6 en hoger:
      • current_timestamp() - interval 12 hours
      • date_sub(current_date(), 1)
      • Andere expressies die of kunnen worden gecast naar een tijdstempel
  • version is een lange waarde die kan worden verkregen uit de uitvoer van DESCRIBE HISTORY table_spec .

Geen van timestamp_expression beide version kan subquery's zijn.

Voorbeeld

SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'
SELECT * FROM delta.`/mnt/delta/events` VERSION AS OF 123

@ Syntaxis

Gebruik de @ syntaxis om de tijdstempel of versie op te geven. De tijdstempel moet de notatie yyyyMMddHHmmssSSS hebben. U kunt na een versie opgeven @ door een toe te laten aan de v versie. Als u bijvoorbeeld een query wilt uitvoeren op 123 de versie voor de tabel , geeft u eventsevents@v123 op.

Voorbeeld

SELECT * FROM events@20190101000000000
SELECT * FROM events@v123