Valider og rydd opp i dataene i lageret

Gjelder for:✅ Lager i Microsoft Fabric

Etter at du har laget en tabell og lastet inn data, valider dataene for fullstendighet og korrekthet før du bruker den til rapportering eller nedstrøms prosessering. Denne artikkelen gir enkle, realistiske eksempler på validerings- og oppryddingsforespørsler som du kan kjøre mot dbo.fact_sale tabellen opprettet i Create-tabeller i lageret.

Forutsetning

For å komme i gang, fullfør følgende forutsetninger:

  • Ha tilgang til et lagerelement i et Premium-kapasitetsområde med bidragsytere eller høyere tillatelser.
    • Sørg for å koble til lagervaren din. Du kan ikke kjøre spørringer direkte i SQL-analyse-endepunktet til et lager.
  • Velg spørringsverktøyet. Denne veiledningen inneholder SQL-spørringseditoren i Microsoft Fabric-portalen, men du kan bruke hvilket som helst T-SQL-spørringsverktøy.
  • Ha en dbo.fact_sale tabell fylt med data, som vist i Opprett tabeller i lageret.

Valideringsforespørsler kan variere fra svært enkle predikater (for eksempel å sjekke NULL for verdier) til mer sofistikerte kontroller som bruker innebygde AI-funksjoner for å evaluere meningen eller kvaliteten på dataene. Velg det valideringsnivået som matcher risikoen og viktigheten av dataene du sjekker.

Behandle rader returnert av disse spørringene som kandidater for gjennomgang, ikke automatiske feil. Bekreft forretningsregelen med data- eller kildesystemeieren før du korrigerer eller sletter rader, og foretrekk å fikse kildekoden eller transformasjonen fremfor å oppdatere faktarader som er på plass.

Finn rader med manglende verdier i en kolonne

Bruk en enkel WHERE klausul for å finne rader som mangler verdier i nødvendige kolonner. Denne sjekken er en av de raskeste og vanligste sjekkene som utføres etter at data er lastet inn i en tabell.

SELECT SaleKey, CustomerKey, StockItemKey, Quantity, UnitPrice
FROM dbo.fact_sale
WHERE CustomerKey IS NULL
   OR StockItemKey IS NULL
   OR Quantity IS NULL
   OR UnitPrice IS NULL;

Valider beregninger

Sammenlign lagrede totaler med deres forventede verdier for å fange opp datakvalitetsproblemer som oppstår under inntasting eller transformasjon. For eksempel TotalIncludingTax skal alltid være lik TotalExcludingTax pluss TaxAmount. Fordi SQL-sammenligninger aldri NULL evaluerer til sann, sjekk også for manglende tall eksplisitt slik at disse radene ikke blir stille utelukket.

SELECT SaleKey, TotalExcludingTax, TaxAmount, TotalIncludingTax,
       (TotalExcludingTax + TaxAmount) AS ExpectedTotalIncludingTax
FROM dbo.fact_sale
WHERE TotalExcludingTax IS NULL
   OR TaxAmount IS NULL
   OR TotalIncludingTax IS NULL
   OR TotalIncludingTax <> (TotalExcludingTax + TaxAmount);

Finn dupliserte rader

Sjekk kombinasjonen av bedriftskolonner som bør være unike sammen. Hvis fakturamodellen din tillater maksimalt én rad per lagerpost på en faktura, bør kombinasjonen av WWIInvoiceID og StockItemKey være unik.

SELECT WWIInvoiceID, StockItemKey, COUNT(*) AS NumberOfRows
FROM dbo.fact_sale
WHERE WWIInvoiceID IS NOT NULL
  AND StockItemKey IS NOT NULL
GROUP BY WWIInvoiceID, StockItemKey
HAVING COUNT(*) > 1;

Du kan også sjekke for duplikater ved å bruke en annen kombinasjon av forretningskolonner, som en heuristisk regel snarere enn en streng regel. Det er uvanlig at samme selger selger samme varelager til samme kunde mer enn én gang på samme dag, så mer enn én rad for kombinasjonen av CustomerKey, StockItemKey, InvoiceDateKey, og SalespersonKey er verdt å vurdere som mulig duplikat. Bekreft mot kildesystemet før du behandler en match som bekreftet, siden en legitim repetisjon samme dag er mulig.

SELECT CustomerKey, StockItemKey, InvoiceDateKey, SalespersonKey, COUNT(*) AS NumberOfRows
FROM dbo.fact_sale
WHERE CustomerKey IS NOT NULL
  AND StockItemKey IS NOT NULL
  AND InvoiceDateKey IS NOT NULL
  AND SalespersonKey IS NOT NULL
GROUP BY CustomerKey, StockItemKey, InvoiceDateKey, SalespersonKey
HAVING COUNT(*) > 1;

Valider innhold

Sjekk at verdiene faller innenfor et forventet sett eller område. For eksempel, Quantity og UnitPrice bør alltid være positive tall.

SELECT SaleKey, Quantity, UnitPrice
FROM dbo.fact_sale
WHERE Quantity <= 0
   OR UnitPrice <= 0;

Valider data med AI-funksjoner

For sjekker som er vanskelige å uttrykke som enkle predikater, bruk AI-funksjoner for å resonnere om innholdet i en kolonne i naturlig språk. I dbo.fact_salenevnes ofte Description om et produkt er ferskt, frossent eller avkjølt, så du kan bruke AI_GENERATE_RESPONSE det for å sjekke om det stemmer overens med radens TotalDryItems telling TotalChillerItems . Definer instruksjonene én gang som en @prompt variabel, og send de radspesifikke verdiene som et eget dataargument.

DECLARE @prompt nvarchar(max) = N'A product description that mentions frozen or chilled items should usually have a nonzero chiller item count, and a description that mentions only dry or ambient items should usually have a nonzero dry item count. Based on the description, dry item count, and chiller item count below, respond with OK if the values look consistent, or a short phrase describing what might be worth reviewing.';

DECLARE @InvoiceDate date = '2013-01-01';

SELECT SaleKey, Description, TotalDryItems, TotalChillerItems,
       AI_GENERATE_RESPONSE(
           @prompt,
           CONCAT(
               'Description: ', Description,
               '. Dry item count: ', TotalDryItems,
               '. Chiller item count: ', TotalChillerItems
           )
       ) AS ReviewNote
FROM dbo.fact_sale
WHERE InvoiceDateKey = @InvoiceDate;

Gjennomgå mulige inkonsekvenser med eieren av kildesystemet før du korrigerer kildedataene.

Neste trinn: