Gå til innhold

Datakvalitet

Mekanismene for å validere og overvåke datakvalitet på plattformen er de innebygde Databricks-funksjonene constraints, expectations og SQL-alarmer, og Python-rammeverket DQX, som installeres som et eksternt bibliotek.

Innebygde mekanismer i Databricks

Databricks tilbyr en oversikt over innebygde verktøy for datakvalitet.

Constraints og Expectations

Databricks har to relaterte mekanismer for å sjekke at rader er gyldige. Expectations er for Declarative Pipelines, og Constraints er for normale Delta-tabeller.

Constraints ser sånn ut:

CREATE TABLE people10m (
  id INT NOT NULL PRIMARY KEY,
  firstName STRING NOT NULL,
  middleName STRING,
  lastName STRING,
  gender STRING,
  birthDate TIMESTAMP,
  ssn STRING,
  salary INT,
  CONSTRAINT dateWithinRange CHECK (birthDate > '1900-01-01')
);

Her er NOT NULL og dateWithinRange constraints. Disse håndheves strengt, og et forsøk på å sette inn rader som ikke oppfyller kravene vil feile. PRIMARY KEY og FOREIGN KEY er strengt tatt også constraints, men håndheves ikke. De har andre funksjoner.

Declarative Pipelines har NOT NULL på lik linje med normale Delta-tabeller, men CONSTRAINT-ordet fungerer litt annerledes. CHECK støttes ikke, men i stedet brukes EXPECT. Her er valid_customer_age ikke en constraint men en expectation:

CREATE OR REFRESH STREAMING TABLE customers(
  CONSTRAINT valid_customer_age EXPECT (age BETWEEN 0 AND 120)
) AS SELECT * FROM STREAM(datasets.samples.raw_customers);

Den største forskjellen mellom constraints og expectations er at expectations kan håndheves på tre måter: WARN, DROP ROW, og FAIL. WARN er default.

De tre håndhevingsmodiene for expectations:

Modus Oppførsel
WARN (default) Logger avvik, setter inn alle rader
DROP ROW Forkaster rader som bryter forventningen
FAIL UPDATE Stopper hele pipeline-kjøringen

Alerts

SQL-alarmer, alerts i Databricks, er SQL-spørringer som kjører på tidsplan og varsler når resultatet bryter en betingelse. Feltene og et eksempel står i Varsling og alarmer.

Verktøy i DQX

DQX er et Python-rammeverk for datakvalitet med et sett av ferdiglagde sjekkfunksjoner og regelobjekter. Det er installert som et eksternt bibliotek og krever manuelt oppsett i lukkede nettverksmiljøer.

Funksjoner

databricks.labs.dqx.check_funcs inneholder alle innebygde sjekkfunksjoner. Eksempler på funksjoner som ikke har direkte ekvivalent i Constraints eller Expectations:

  • is_unique — validerer at en kolonne eller sammensatt nøkkel er unik
  • is_aggr_equal — validerer at et aggregat er likt en forventet verdi
  • is_data_fresh — validerer at data ikke er eldre enn en gitt tidsgrense. Uten DQX dekker ferskhetsvarselet fra bundle-malen det samme behovet, som en egen jobb som feiler når en tabell ikke har fått nye data innenfor maksalderen

Regler

Sjekkfunksjonene brukes som argumenter til regelobjekter i databricks.labs.dqx.rule:

DQDatasetRule(  # check uniqueness of composite key
    criticality="error", check_func=check_funcs.is_unique, columns=["col1", "col2"]
)

Se offisiell dokumentasjon for flere eksempler.

Begrensninger

  • PRIMARY KEY og FOREIGN KEY håndheves ikke.
  • Expectations med WARN (default) logger avvik uten å påvirke datainnsetting.
  • DQX krever manuell installasjon i lukkede nettverksmiljøer uten internettilgang.

Relatert innhold

Guider:

Forklaringer:

Referanser:

Ekstern dokumentasjon: