Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:✅ Warehouse in Microsoft Fabric
Nadat je een tabel hebt gemaakt en data erin hebt geladen, valideer je de data op volledigheid en correctheid voordat je ze gebruikt voor rapportages of downstream-verwerking.
Dit artikel geeft eenvoudige, realistische voorbeelden van validatie- en cleanup-queries die je kunt uitvoeren op de dbo.fact_sale tabel die in Create-tabellen in het warehouse is aangemaakt.
Prerequisites
Voltooi de volgende vereisten om aan de slag te gaan:
- Toegang hebben tot een magazijnitem in een Premium-capaciteit-werkruimte met bijdrager- of hogere machtigingen.
- Zorg ervoor dat u verbinding maakt met uw magazijnitem. Je kunt geen queries direct uitvoeren in het SQL-analyse-eindpunt van een warehouse.
- Kies je query-tool. Deze zelfstudie bevat de SQL-queryeditor in de Microsoft Fabric-portal, maar u kunt elk hulpprogramma voor T-SQL-query's gebruiken.
- Zorg dat een
dbo.fact_saletabel gevuld is met data, zoals getoond in Create tables in het magazijn.
Validatiequeries kunnen variëren van zeer eenvoudige predicaten (bijvoorbeeld het controleren van NULL waarden) tot meer geavanceerde controles die ingebouwde AI-functies gebruiken om de betekenis of kwaliteit van de data te evalueren. Kies het niveau van validatie dat past bij het risico en het belang van de data die je controleert.
Behandel rijen die door deze zoekopdrachten worden teruggegeven als kandidaten voor beoordeling, niet als automatische fouten. Bevestig de bedrijfsregel met de eigenaar van het data- of bronsysteem voordat je rijen corrigeert of verwijdert, en geef de voorkeur aan het repareren van de broncode of transformatie boven het updaten van feitenrijen die er zijn.
Zoek rijen met ontbrekende waarden in een kolom
Gebruik een eenvoudige WHERE clausule om rijen te vinden die waarden missen in de vereiste kolommen. Deze controle is een van de snelste en meest voorkomende controles die na het laden van data in een tabel worden uitgevoerd.
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;
Valideer berekeningen
Vergelijk opgeslagen totalen met hun verwachte waarden om problemen met de datakwaliteit te signaleren die tijdens het invoeren of de transformatie ontstaan. Bijvoorbeeld, TotalIncludingTax moet altijd gelijk zijn aan TotalExcludingTax plus TaxAmount. Omdat SQL-vergelijkingen met NULL nooit als waar worden geëvalueerd, controleer ook expliciet op ontbrekende bedragen zodat die rijen niet ongemerkt worden uitgesloten.
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);
Zoek dubbele rijen
Controleer de combinatie van zakelijke kolommen die samen uniek moeten zijn. Als je factuurmodel maximaal één rij per voorraaditem op een factuur toestaat, zou de combinatie van WWIInvoiceID en StockItemKey uniek moeten zijn.
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;
Je kunt ook controleren op duplicaten met een andere combinatie van bedrijfskolommen, als een heuristiek in plaats van een strikte regel. Het is ongebruikelijk dat dezelfde verkoper hetzelfde voorraadartikel meer dan eens op dezelfde dag aan dezelfde klant verkoopt, dus meer dan één rij voor de combinatie van CustomerKey, StockItemKey, InvoiceDateKey, en SalespersonKey is het waard om te bekijken als mogelijke duplicaat. Bevestig het tegen het bronsysteem voordat je een match als bevestigd beschouwt, aangezien een legitieme herhalingsorder op dezelfde dag mogelijk is.
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;
Inhoud valideren
Controleer of waarden binnen een verwachte set of bereik vallen. Bijvoorbeeld, Quantity en UnitPrice moeten altijd positieve getallen zijn.
SELECT SaleKey, Quantity, UnitPrice
FROM dbo.fact_sale
WHERE Quantity <= 0
OR UnitPrice <= 0;
Valideer data met AI-functies
Voor controles die moeilijk uit te drukken zijn als eenvoudige predikaten, gebruik je AI-functies om de inhoud van een kolom in natuurlijke taal te redeneren. In dbo.fact_sale staat in Description vaak vermeld of een product vers, bevroren of gekoeld is, zodat je met AI_GENERATE_RESPONSE kunt controleren of dit overeenkomt met de aantallen voor TotalChillerItems en TotalDryItems in die rij. Definieer de instructies één keer als variabele @prompt en geef de rij-specifieke waarden door als een apart data-argument.
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;
Bekijk mogelijke inconsistenties met de eigenaar van het bronsysteem voordat je de brongegevens corrigeert.