Validoi ja siivoa varaston dataa

Koskee:✅ Microsoft Fabric -varasto

Kun olet luonut taulukon ja ladannut dataa siihen, varmista datan täydellisyys ja oikeellisuus ennen kuin käytät sitä raportointiin tai jälkikäsittelyyn. Tämä artikkeli tarjoaa yksinkertaisia ja realistisia esimerkkejä validointi- ja puhdistuskyselyistä, joita voit ajaa taulukon dbo.fact_sale luomista vastaan luotussa taulukossa varastossa.

edellytykset

Aloittaaksesi suorita seuraavat ennakkovaatimukset:

Validointikyselyt voivat vaihdella hyvin yksinkertaisista predikaateista (esimerkiksi arvojen tarkistaminen NULL ) aina kehittyneempiin tarkistuksiin, joissa käytetään sisäänrakennettuja tekoälyfunktioita datan merkityksen tai laadun arviointiin. Valitse validoinnin taso, joka vastaa tarkistamasi datan riskiä ja merkitystä.

Käsittele näiden kyselyjen palauttamia rivejä tarkistettaviksi, ei automaattisina virheinä. Varmista liiketoimintasääntö datan tai lähdejärjestelmän omistajan kanssa ennen kuin korjaat tai poistat rivejä, ja suosi lähteen tai muunnoksen korjaamista kuin faktasivien päivittämistä.

Etsi rivejä, joilta puuttuvat arvot sarakkeesta

Käytä yksinkertaista WHERE lauseketta löytääksesi rivejä, joilta puuttuu arvoja vaadituista sarakkeista. Tämä tarkistus on yksi nopeimmista ja yleisimmistä tarkistuksista, jotka suoritetaan datan lataamisen jälkeen taulukkoon.

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;

Laskelmien validointi

Vertaa tallennettuja kokonaissumia niiden odotusarvoihin havaitaksesi tiedon laadun ongelmat, jotka ilmenevät vastaanoton tai muunnoksen yhteydessä. Esimerkiksi pitäisi TotalIncludingTax aina olla yhtä suuri kuin TotalExcludingTax plus TaxAmount. Koska SQL-vertailut NULL eivät koskaan arvioida todeiksi, tarkista myös puuttuvat summat eksplisiittisesti, jotta rivit eivät jää hiljaisesti pois.

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

Etsi kaksoisrivejä

Tarkista yhdistelmä liiketoimintapalstoja, jotka tulisi olla ainutlaatuisia yhdessä. Jos laskumallisi sallii korkeintaan yhden rivin per varastotuote laskussa, yhdistelmän WWIInvoiceID ja StockItemKey pitäisi olla yksilöllinen.

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;

Voit myös tarkistaa päällekkäisyyksiä eri liiketoimintasarakkeiden yhdistelmällä, heuristiikkana eikä tiukkana sääntönä. On harvinaista, että sama myyjä myy saman varastotuotteen samalle asiakkaalle useammin kuin kerran samana päivänä, joten useampi kuin yksi rivi yhdistelmälle CustomerKey, StockItemKey, InvoiceDateKey, ja SalespersonKey on syytä tarkastella mahdollisena kaksoiskappaleena. Varmista lähdejärjestelmää vastaan ennen kuin käsittelet osuman vahvistetuksi, sillä aito uusintatilaus samana päivänä on mahdollinen.

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;

Sisällön vahvistaminen

Tarkista, että arvot osuvat odotetulle joukolle tai vaihteluvälille. Esimerkiksi Quantity ja UnitPrice pitäisi aina olla positiivisia lukuja.

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

Validoi data tekoälyfunktioilla

Jos tarkistuksia on vaikea ilmaista yksinkertaisina predikaattina, käytä tekoälyfunktioita pohtimaan sarakkeen sisältöä luonnollisella kielellä. Siinä dbo.fact_sale, Description mainitaan usein, onko tuote tuore, pakastettu vai kylmä, joten voit tarkistaa AI_GENERATE_RESPONSE , onko se linjassa kyseisen rivin TotalDryItems ja TotalChillerItems lukumäärän kanssa. Määrittele käskyt kerran @prompt muuttujana ja välitä rivikohtaiset arvot erillisenä dataargumenttina.

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;

Tarkista mahdolliset ristiriidat lähdejärjestelmän omistajan kanssa ennen lähdedatan korjaamista.

Seuraava vaihe