Gegevens overslaan

Note

In Databricks Runtime 13.3 en hoger raadt Databricks aan om liquid clustering te gebruiken voor tabelindeling. Clustering is niet compatibel met Z-volgorde. Zie Liquid Clustering gebruiken voor tabellen.

Statistieken voor het overslaan van gegevens worden automatisch verzameld wanneer u gegevens naar een Delta Lake- of een beheerde Apache Iceberg-tabel schrijft. Azure Databricks gebruikt statistieken per bestand (minimum- en maximumwaarden, null-tellingen en totaalrecords) op het moment van de query om irrelevante bestanden over te slaan en query's sneller te maken.

U moet statistieken hebben verzameld voor kolommen die worden gebruikt in ZORDER verklaringen. Zie Wat is Z-ordering?

Kolommen voor statistieken opgeven

Voor externe tabellen van Unity Catalog worden statistieken verzameld voor de eerste 32 kolommen die standaard in uw tabelschema zijn gedefinieerd. Voor beheerde tabellen in Unity Catalog worden statistieken voor het overslaan van bestanden intelligent gekozen met behulp van voorspellende optimalisatie en hebben ze geen kolomlimiet van 32. Voorspellende optimalisatie wordt automatisch uitgevoerd ANALYZE, een opdracht voor het verzamelen van statistieken. Databricks raadt aan voorspellende optimalisatie in te schakelen voor alle beheerde tabellen in Unity Catalog om het onderhoud van gegevens te vereenvoudigen en de opslagkosten te verlagen. Zie Voorspellende optimalisatie voor beheerde tabellen in Unity Catalog.

Als u geen predictive optimization gebruikt, kunt u het gedrag wijzigen waarmee statistiekenverzamelingen worden beperkt tot 32 kolommen door een van de volgende tabeleigenschappen in te stellen:

Tabeleigenschap Databricks Runtime wordt ondersteund Description
dataSkippingNumIndexedCols Alle ondersteunde Databricks Runtime-versies Verhoog of verklein het aantal kolommen waarop statistieken worden verzameld. Afhankelijk van de kolomvolgorde.
dataSkippingStatsColumns Databricks Runtime 13.3 LTS en hoger Geef een lijst met kolomnamen op waarvoor statistieken worden verzameld. dataSkippingNumIndexedColsVervangt .

Tabeleigenschappen kunnen worden ingesteld bij het maken van tabellen of met ALTER TABLE instructies. Zie naslaginformatie over tabeleigenschappen. In het volgende voorbeeld wordt het standaardgedrag van statistiekenverzameling overschreven om verzameling statistieken in te stellen op benoemde kolommen:

Delta Lake

ALTER TABLE table_name SET TBLPROPERTIES('delta.dataSkippingStatsColumns' = 'col1, col2, col3')

Ijsbergtabel

ALTER TABLE table_name SET TBLPROPERTIES('iceberg.dataSkippingStatsColumns' = 'col1, col2, col3')

Bij het bijwerken van deze eigenschappen worden statistieken voor bestaande gegevens niet automatisch opnieuw berekend. In plaats daarvan heeft dit invloed op het gedrag van het verzamelen van toekomstige statistieken bij het toevoegen of bijwerken van gegevens in de tabel. Statistieken worden niet gebruikt voor kolommen die niet zijn opgenomen in de huidige lijst met statistiekenkolommen.

Als u in Databricks Runtime 14.3 LTS en hoger de tabeleigenschappen hebt gewijzigd of de opgegeven kolommen voor statistieken hebt gewijzigd, kunt u de hercomputatie van statistieken voor een tabel handmatig activeren met behulp van de volgende opdracht:

ANALYZE TABLE table_name COMPUTE DELTA STATISTICS

Note

Lange tekenreeksen worden afgekort bij het verzamelen van statistieken. U kunt ervoor kiezen om lange tekenreekskolommen uit te sluiten van de verzameling statistieken, met name als de kolommen niet vaak worden gebruikt voor het filteren van query's.

Wat is Z-ordering?

Note

Databricks raadt het gebruik van vloeibare clustering aan voor alle nieuwe tabellen. U kunt niet in combinatie met vloeistofclustering gebruiken ZORDER . Zie Liquid Clustering gebruiken voor tabellen.

Z-volgorde is een techniek om gerelateerde informatie in dezelfde set bestanden te rangschikken. Azure Databricks-algoritmen voor het overslaan van data maken automatisch gebruik van deze co-lokaliteit. Dit gedrag vermindert de hoeveelheid gegevens die moet worden gelezen. Geef de kolommen op die in de ZORDER BY clausule moeten worden gesorteerd op Z-order.

OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)

Als u verwacht dat een kolom vaak wordt gebruikt in querypredicaten en als die kolom een hoge kardinaliteit (dat wil gezegd een groot aantal afzonderlijke waarden) heeft, gebruikt u ZORDER BY.

U kunt meerdere kolommen voor ZORDER BY opgeven als een door komma's gescheiden lijst. De effectiviteit daalt echter met elke extra kolom.

Databricks raadt u aan geen gebruik te maken ZORDER BY van kolommen waarvoor geen statistieken zijn verzameld, omdat deze ineffectief is en onnodige rekenresources gebruikt. Voor het overslaan van data zijn kolomlokale statistieken vereist, zoals min, max en het aantal. U kunt het verzamelen van statistieken voor bepaalde kolommen configureren door de volgorde van kolommen in het schema te wijzigen of u kunt het aantal kolommen verhogen waarop statistieken moeten worden verzameld.

Note

  • Z-volgorde is niet idempotent , maar is een incrementele bewerking. De tijd die nodig is voor Z-ordering neemt niet gegarandeerd af over meerdere runs. Als er echter geen nieuwe gegevens zijn toegevoegd aan een partitie die alleen Z-geordende was, heeft een andere Z-volgorde van die partitie geen effect.

  • Z-ordering heeft als doel evenwichtig verdeelde databestanden te produceren wat betreft het aantal tuples, maar niet noodzakelijkerwijs wat betreft de opslaggrootte. Hoewel bestandsgrootten en het aantal tuples met elkaar samenhangen, kunnen er situaties zijn waarin dat niet het geval is, waardoor de tijden van optimalisatietaken vertekend raken.

    Als u bijvoorbeeld ZORDER BYop datum sorteert en uw meest recente records allemaal veel breder zijn (zoals langere arrays of tekenreekswaarden) dan die uit het verleden, kunnen de taakduren en de resulterende bestandsgrootten van de OPTIMIZE-job vertekend zijn. Dit is echter alleen een probleem voor de OPTIMIZE opdracht zelf. Het heeft waarschijnlijk geen negatieve gevolgen voor volgende query's.