Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:
Databricks SQL
Databricks Runtime
Anmärkning
På hanterade Apache Iceberg-tabeller stöder Unity Catalog endast flytande klustring och tolkar partitioner som anges i PARTITION BY -satsen som klustringsnycklar för flytande klustring.
Databricks rekommenderar flytande klustring för alla nya Delta-tabeller och hanterade Isbergstabeller. Se Hanterade tabeller i Unity Catalog i Azure Databricks för Delta Lake och Apache Iceberg och Använd flytande klustring för tabeller.
En partition består av en delmängd rader i en tabell som delar samma värde för en fördefinierad delmängd av kolumner som kallas partitioneringskolumner. Att använda partitioner kan påskynda frågor mot tabellen samt datamanipulering.
Om du vill använda partitioner definierar du uppsättningen partitioneringskolumn när du skapar en tabell genom att inkludera satsen PARTITIONED BY.
När du infogar eller manipulerar rader i en tabell skickar Azure Databricks automatiskt rader till lämpliga partitioner.
Du kan också ange partitionen direkt med hjälp av en PARTITION-sats.
Den här syntaxen är också tillgänglig för tabeller som inte använder Delta Lake-format, till DROPADD eller RENAME partitioner snabbt med hjälp av -instruktionenALTER TABLE.
PARTITIONERAD AV
Satsen PARTITIONED BY angav en lista över kolumner längs vilka den nya tabellen partitioneras.
Syntax
PARTITIONED BY ( { partition_column [ column_type ] } [, ...] )
Parametrar
-
En identifierare kan referera till en
column_identifieri tabellen. Om du anger fler än en kolumn får det inte finnas några dubbletter. Om du refererar till alla kolumner i tabellencolumn_specificationutlöses ett fel. -
Om inte
partition_columnrefererar till encolumn_identifieri tabellenscolumn_specification, definierarcolumn_typedatatypen förpartition_column.Alla datatyper som stöds av Databricks SQL stöds inte av alla datakällor.
Anteckningar
Om du inte definierar en partitioneringskolumn för en Delta Lake-tabell, flyttas de kolumner som refererar till kolumnerna i kolumnspecifikationen alltid till slutet av tabellen.
PARTITION
Du använder satsen PARTITION för att identifiera en partition som ska frågas eller manipuleras.
En partition identifieras genom att namnge alla dess kolumner och associera var och en med ett värde. Du behöver inte ange dem i en viss ordning.
Om du inte lägger till en ny partition i en befintlig tabell kan du utelämna kolumner eller värden för att indikera att åtgärden gäller för alla matchande partitioner som matchar delmängden av kolumner.
PARTITION ( { partition_column [ = partition_value | LIKE pattern ] } [ , ... ] )
Parametrar
-
En kolumn som utsetts till partitionskolumn i tabellen. Du kanske inte anger samma kolumn två gånger.
= partition_valueEn liternal av en datatyp som motsvarar typen på partitionskolumnen. Om du utelämnar ett partitionsvärde matchar specifikationen alla värden för den här partitionskolumnen.
LIKE patternDet här formuläret tillåts endast i ALTER SHARE LÄGG till TABLE.
Matchar strängrepresentationen av
partition_columntillpattern.patternmåste vara en strängliteral som används i LIKE.
Exempel
-- Use the PARTTIONED BY clause in a table definition
> CREATE TABLE student(university STRING,
major STRING,
name STRING)
PARTITIONED BY(university, major)
> CREATE TABLE professor(name STRING)
PARTITIONED BY(university STRING,
department STRING);
-- Use the PARTITION specification to INSERT into a table
> INSERT INTO student
PARTITION(university= 'TU Kaiserslautern') (major, name)
SELECT major, name FROM freshmen;
-- Use the partition specification to add and drop a partition
> CREATE TABLE log(date DATE, id INT, event STRING)
USING CSV
PARTITIONED BY (date);
> ALTER TABLE log ADD PARTITION(date = DATE'2021-09-10');
> ALTER TABLE log DROP PARTITION(date = DATE'2021-09-10');
-- Drop all partitions from the named university, independent of the major.
> ALTER TABLE student DROP PARTITION(university = 'TU Kaiserslautern');