Delen via


Gegevens opschonen en valideren met batch- of stroomverwerking

Het opschonen en valideren van gegevens is essentieel voor het waarborgen van de kwaliteit van data-assets in een lakehouse. In dit artikel vindt u een overzicht van Azure Databricks-productaanbiedingen die zijn ontworpen om de gegevenskwaliteit te vergemakkelijken en aanbevelingen te doen voor het definiëren van bedrijfslogica voor het implementeren van aangepaste regels.

Toepassing van schema's op Azure Databricks

Delta Lake biedt semantiek voor het afdwingen van schema- en beperkingscontroles op schrijfbewerkingen, wat garanties biedt voor gegevenskwaliteit voor tabellen in een lakehouse.

Schema afdwingen zorgt ervoor dat gegevens die naar een tabel zijn geschreven, voldoen aan een vooraf gedefinieerd schema. Schemavalidatieregels variëren per bewerking. Raadpleeg schema-afdwinging.

Delta biedt mechanismen voor het aanbrengen van schemawijzigingen en veranderende tabellen om de ontwikkeling van schema's af te handelen. Het is belangrijk om zorgvuldig te overwegen wanneer u schema-evolutie toepast, zodat u het verwijderen van velden of het mislukken van pijplijnen kunt voorkomen. Zie Tabelschema bijwerken voor meer informatie over het handmatig of automatisch bijwerken van schema's.

Tabel beperkingen

Beperkingen kunnen de vorm aannemen van informatieve primaire sleutel- en refererende-sleutelbeperkingen of afgedwongen beperkingen. Zie ADD CONSTRAINT clausule.

Tabelbeperkingen op Azure Databricks zijn ofwel afgedwongen of informatief.

Afgedwongen beperkingen omvatten NOT NULL en CHECK beperkingen.

Informatiebeperkingen omvatten primaire sleutel- en vreemde sleutelbeperkingen.

Zie Beperkingen voor Azure Databricks.

Omgaan met null- of ontbrekende waarden

NOT NULL kan worden afgedwongen op Delta-tabellen. Deze kan alleen worden ingeschakeld voor een bestaande tabel als er geen bestaande records in de kolom null zijn en voorkomt dat nieuwe records met null-waarden worden ingevoegd in een tabel.

Het afdwingen van een patroon

Reguliere expressies (regex) kunnen worden gebruikt om verwachte patronen in een gegevensveld af te dwingen. Dit is met name handig bij het verwerken van tekstgegevens die moeten voldoen aan specifieke indelingen of patronen.

Als u een patroon wilt afdwingen met behulp van regex, kunt u de REGEXP of RLIKE functies in SQL gebruiken. Met deze functies kunt u een gegevensveld vergelijken met een opgegeven regex-patroon.

Hier volgt een voorbeeld van het gebruik van de CHECK beperking met regex voor het afdwingen van patronen in SQL:

CREATE TABLE table_name (
  column_name STRING CHECK (column_name REGEXP '^[A-Za-z0-9]+$')
);

Afdwingen van waarden

Beperkingen kunnen worden gebruikt om waardebereiken af te dwingen voor kolommen in een tabel. Dit zorgt ervoor dat alleen geldige waarden binnen het opgegeven bereik mogen worden ingevoegd of bijgewerkt.

Als u een beperking voor een waardebereik wilt afdwingen, kunt u de CHECK beperking in SQL gebruiken. Met de CHECK beperking kunt u een voorwaarde definiëren die waar moet zijn voor elke rij in de tabel.

Hier volgt een voorbeeld van het gebruik van de beperking voor het CHECK afdwingen van een waardebereik in een kolom:

CREATE TABLE table_name (
  column_name INT CHECK (column_name >= 0 AND column_name <= 100)
);

Definieer en configureer verwachtingen met behulp van Lakeflow Spark-declaratieve pijplijnen.

Met Lakeflow Spark-declaratieve pijplijnen kunt u verwachtingen definiëren bij het declareren van gerealiseerde weergaven of streamingtabellen. U kunt ervoor kiezen om verwachtingen te configureren om u te waarschuwen voor overtredingen, schendingen te negeren, of workloads stop te zetten op basis van overtredingen. Zie Gegevenskwaliteit beheren met de verwachtingen van pijplijnen.

Gegevensbewaking

Azure Databricks biedt services voor bewaking van gegevenskwaliteit, waarmee u de statistische eigenschappen en kwaliteit van de gegevens in alle tabellen in uw account kunt bewaken. Zie Gegevensprofilering.

Cast-gegevenstypen

Wanneer u gegevens in een tabel invoegt of bijwerkt, worden gegevenstypen door Azure Databricks gecast wanneer dit veilig kan zonder gegevens te verliezen.

Zie de volgende artikelen voor meer informatie over cast-gedrag:

Aangepaste bedrijfslogica

U kunt filters en WHERE-componenten gebruiken om aangepaste logica te definiëren die slechte records in quarantaine plaatst en voorkomt dat ze worden doorgegeven aan downstreamtabellen. CASE WHEN ... OTHERWISE clausules stellen u in staat om voorwaardelijke logica te definiëren om bedrijfslogica correct toe te passen op records die op voorspelbare manieren verwachtingen schenden.

DECLARE current_time = now()

INSERT INTO silver_table
  SELECT * FROM bronze_table
  WHERE event_timestamp <= current_time AND quantity >= 0;

INSERT INTO quarantine_table
  SELECT * FROM bronze_table
  WHERE event_timestamp > current_time OR quantity < 0;

Notitie

Databricks raadt aan om gefilterde gegevens altijd te verwerken als een afzonderlijke schrijfbewerking, met name wanneer u Structured Streaming gebruikt. Het gebruik van .foreachBatch om naar meerdere tabellen te schrijven, kan leiden tot inconsistente resultaten.

U hebt bijvoorbeeld een upstream-systeem dat NULL waarden niet kan coderen, zodat de tijdelijke aanduidingswaarde -1 wordt gebruikt om ontbrekende gegevens weer te geven. In plaats van aangepaste logica te schrijven voor alle downstream-query's in Azure Databricks om records die -1 bevatten te negeren, kunt u een case-when-instructie gebruiken om deze records dynamisch als een transformatie te vervangen.

INSERT INTO silver_table
  SELECT
    * EXCEPT weight,
    CASE
      WHEN weight = -1 THEN NULL
      ELSE weight
    END AS weight
  FROM bronze_table;