Delen via


SELECTEREN

Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime

Hiermee wordt een resultatenset samengesteld uit een of meer tabelverwijzingen. De SELECT component kan deel uitmaken van een query die ook algemene tabelexpressies (CTE), setbewerkingen en verschillende andere componenten bevat.

Syntaxis

SELECT [ hints ] [ ALL | DISTINCT ] { named_expression | star_clause } [, ...]
  FROM table_reference [, ...]
  [ LATERAL VIEW clause ]
  [ WHERE clause ]
  [ GROUP BY clause ]
  [ HAVING clause]
  [ QUALIFY clause ]

named_expression
   expression [ column_alias ]

star_clause
   [ { table_name | view_name } . ] * [ except_clause ]

except_clause
   EXCEPT ( { column_name | field_name } [, ...] )

Parameters

  • Hints

    Hints helpen de Azure Databricks Optimizer betere planningsbeslissingen te nemen. Azure Databricks ondersteunt hints die invloed hebben op de selectie van joinstrategieën en het opnieuw partitioneren van de gegevens.

  • ALL

    Selecteer alle overeenkomende rijen in de tabelverwijzingen. Standaard ingeschakeld.

  • DUIDELIJK

    Selecteer alle overeenkomende rijen uit de tabelverwijzingen nadat u dubbele waarden in de resultaten hebt verwijderd.

  • named_expression

    Een expressie met een optionele toegewezen naam.

    • uitdrukking

      Een combinatie van een of meer waarden, operators en SQL-functies die een waarde opleveren.

    • column_alias

      Een optionele kolom-id met de naam van het expressieresultaat. Als er geen column_alias Databricks SQL is opgegeven, wordt er een afgeleid.

  • star_clause

    Een verkorte naam voor alle kolommen waarnaar kan worden verwezen in de FROM component of de kolommen of velden van een specifieke tabelreferentie in de FROM component.

  • table_reference

    Een bron van invoer voor de SELECT. Deze invoerreferentie kan worden omgezet in een streaming-verwijzing met behulp van het STREAM trefwoord vóór de verwijzing.

  • ZIJWAARTSE WEERGAVE

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

    In Databricks SQL en vanaf Databricks Runtime 12.2 wordt deze component afgeschaft. U moet een generatorfunctie met tabelwaarden aanroepen als een table_reference.

  • WAAR

    Hiermee filtert u het resultaat van de FROM component op basis van de opgegeven predicaten.

  • GROEPEREN OP

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

  • HAVING

    De predicaten waarop de rijen die door worden geproduceerd GROUP BY , worden gefilterd. De HAVING component wordt gebruikt om rijen te filteren nadat de groepering is uitgevoerd. Als u zonder opgeeftHAVING, wordt een GROUP BY expressie zonder groepering (globale statistische functie) GROUP BYaangegeven.

  • KWALIFICEREN

    De predicaten die worden gebruikt om de resultaten van vensterfuncties te filteren. Als u deze functie wilt gebruiken QUALIFY, moet ten minste één vensterfunctie aanwezig zijn in de SELECT-lijst of de COMPONENT QUALIFY.

Selecteren in Delta-tabel

Naast de standaardopties SELECT ondersteunen Delta-tabellen de opties voor tijdreizen die in deze sectie worden beschreven. Zie Werken met Delta Lake-tabelgeschiedenis voor meer informatie.

AS OF syntaxis

table_identifier TIMESTAMP AS OF timestamp_expression

table_identifier VERSION AS OF version
  • timestamp_expression kan een van de volgende zijn:
    • '2018-10-18T22:15:12.013Z', dat wil gezegd, een tekenreeks die kan worden gecast naar een tijdstempel
    • cast('2018-10-18 13:36:32 CEST' as timestamp)
    • '2018-10-18', dat wil gezegd, een datumtekenreeks
    • current_timestamp() - interval 12 hours
    • date_sub(current_date(), 1)
    • Elke andere expressie die wel of niet kan worden omgezet in een tijdstempel
  • version is een lange waarde die kan worden verkregen uit de uitvoer van DESCRIBE HISTORY table_spec.

version Geen van beide timestamp_expression subquery's.

Opmerking

> SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'

> SELECT * FROM events VERSION AS OF 123

@ syntaxis

Gebruik de @ syntaxis om de tijdstempel of versie op te geven. De tijdstempel moet een yyyyMMddHHmmssSSS indeling hebben. U kunt een versie opgeven nadat @ u een v versie wilt toevoegen aan de versie. Als u bijvoorbeeld een query wilt uitvoeren op de versie 123 van de tabel events, geeft u events@v123op.

Opmerking

> SELECT * FROM events@20190101000000000

> SELECT * FROM events@v123

Voorbeelden

-- select all referencable columns from all tables
> SELECT * FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
  1   2   3   4

-- select all referencable columns from one table
> SELECT t2.* FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
  3   4

-- select all referencable columns from all tables except t2.c4
> SELECT * EXCEPT(c4) FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
  1   2   3

-- select all referencable columns from a table, except a nested field.
> SELECT * EXCEPT(c2.b) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
  1  { "a" : 2 }

-- Removing all fields results in an empty struct
> SELECT * EXCEPT(c2.b, c2.a) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
  1  { }

-- Overlapping names result in an error
> SELECT * EXCEPT(c2, c2.a) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
  Error: EXCEPT_OVERLAPPING_COLUMNS