Valider og ryd op i data i lageret

Gælder for:✅ Warehouse i Microsoft Fabric

Når du har oprettet en tabel og indlæst data, skal du validere dataene for fuldstændighed og korrekthed, før du bruger den til rapportering eller nedstrømsbehandling. Denne artikel giver simple, realistiske eksempler på validerings- og oprydningsforespørgsler, som du kan køre mod dbo.fact_sale tabellen oprettet i Opret tabeller i lageret.

Forudsætninger

For at komme i gang, skal du opfylde følgende forudsætninger:

  • Have adgang til et lagerelement i et Arbejdsområde med Premium-kapacitet med bidragydere eller højere tilladelser.
    • Sørg for at forbinde til dit lagerprodukt. Du kan ikke køre forespørgsler direkte i SQL analytics-endpointet i et warehouse.
  • Vælg dit forespørgselsværktøj. Denne vejledning indeholder SQL-forespørgselseditoren i Microsoft Fabric-portalen, men du kan bruge ethvert T-SQL-forespørgselsværktøj.
  • Hav en dbo.fact_sale tabel fyldt med data, som vist i Opret tabeller i lageret.

Valideringsforespørgsler kan spænde fra meget simple prædikater (for eksempel kontrol af NULL værdier) til mere sofistikerede kontroller, der bruger indbyggede AI-funktioner til at evaluere betydningen eller kvaliteten af dataene. Vælg det valideringsniveau, der matcher risikoen og vigtigheden af de data, du tjekker.

Behandl rækker, der returneres af disse forespørgsler, som kandidater til gennemgang, ikke som automatiske fejl. Bekræft forretningsreglen med data- eller kildesystem-ejeren, før du retter eller sletter rækker, og foretræk at rette kildekoden eller transformationen frem for at opdatere faktarækker.

Find rækker med manglende værdier i en kolonne

Brug en simpel WHERE klausul til at finde rækker, der mangler værdier i de krævede kolonner. Denne kontrol er en af de hurtigste og mest almindelige kontroller at køre efter at have indlæst data i en tabel.

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 værdier for at opdage datakvalitetsproblemer, der opstår under indlæsning eller transformation. For eksempel TotalIncludingTax skal altid være lig med TotalExcludingTax plus .TaxAmount Fordi SQL-sammenligninger aldrig evaluerer NULL til sand, så tjek også for manglende mængder eksplicit, så disse rækker ikke udelukkes lydløst.

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);

Find dubletrækker

Tjek kombinationen af forretningskolonner, der bør være unikke sammen. Hvis din fakturamodel tillader højst én række pr. lagerpost på en faktura, bør kombinationen af 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å tjekke for dubletter ved at bruge en anden kombination af forretningskolonner, som en heuristik snarere end en streng regel. Det er usædvanligt, at den samme sælger sælger den samme varevare, til den samme kunde mere end én gang på samme dag, så mere end én række for kombinationen af CustomerKey, StockItemKey, InvoiceDateKey, og SalespersonKey det er værd at gennemgå som en mulig kopi. Bekræft mod kildesystemet, før du behandler et match som bekræftet, da en legitim gentagelsesordre 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 indhold

Tjek at værdierne ligger inden for et forventet sæt eller interval. For eksempel Quantity bør og UnitPrice altid være positive tal.

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

Valider data med AI-funktioner

For kontroller, der er svære at udtrykke som simple prædikater, brug AI-funktioner til at ræsonnere om indholdet af en kolonne i naturligt sprog. I dbo.fact_salenævnes ofte Description , om et produkt er frisk, frossent eller koldt, så du kan bruge AI_GENERATE_RESPONSE det til at tjekke, om det stemmer overens med rækkens TotalDryItems og TotalChillerItems tællingerne. Definer instruktionerne én gang som en @prompt variabel, og send de rækkespecifikke værdier som et separat 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;

Gennemgå mulige uoverensstemmelser med kildesystemets ejer, før du retter kildedataene.

Næste trin