Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :✅Entrepôt dans Microsoft Fabric
Après avoir créé une table et chargé les données, validez la complétude et la correction des données avant de les utiliser pour des rapports ou des traitements en aval.
Cet article fournit des exemples simples et réalistes de requêtes de validation et de nettoyage que vous pouvez exécuter sur la dbo.fact_sale table créée dans Create tables dans l’entrepôt.
Prerequisites
Pour commencer, suivez les conditions préalables suivantes :
- Accédez à un élément d’entrepôt dans un espace de travail doté d'une capacité Premium avec des autorisations de contributeur ou supérieures.
- Veillez à vous connecter à votre élément d’entrepôt. Vous ne pouvez pas lancer de requêtes directement dans le point d’accès SQL Analytics d’un entrepôt.
- Choisissez votre outil de requête. Ce tutoriel présente l’éditeur de requête SQL dans le portail Microsoft Fabric, mais vous pouvez utiliser n’importe quel outil de requête T-SQL.
- Disposez d’un
dbo.fact_saletableau rempli de données, comme indiqué dans Créer des tables dans l’entrepôt.
Les requêtes de validation peuvent aller de prédicats très simples (par exemple, la vérification des NULL valeurs) à des vérifications plus sophistiquées utilisant des fonctions d’IA intégrées pour évaluer la signification ou la qualité des données. Choisissez le niveau de validation qui correspond au risque et à l’importance des données que vous vérifiez.
Considérez les lignes retournées par ces requêtes comme des candidats à examen, et non comme des erreurs automatiques. Confirmez la règle métier avec le propriétaire des données ou du système source avant de corriger ou supprimer les lignes, et préférez corriger la source ou la transformation plutôt que de mettre à jour les lignes de faits en place.
Trouver les lignes avec des valeurs manquantes dans une colonne
Utilisez une clause simple WHERE pour trouver les lignes dont il manque des valeurs dans les colonnes requises. Cette vérification est l’une des plus rapides et des plus courantes à effectuer après avoir chargé des données dans une table.
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 les calculs
Comparez les totaux stockés avec leurs valeurs attendues afin de détecter les problèmes de qualité des données introduits lors de l’ingestion ou de la transformation. Par exemple, TotalIncludingTax doit toujours être égal TotalExcludingTax à plus TaxAmount. Parce que les comparaisons SQL impliquant NULL ne sont jamais vraies, vérifiez aussi explicitement les montants manquants afin que ces lignes ne soient pas exclues sans avertissement.
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);
Trouver des lignes dupliquées
Vérifiez la combinaison des colonnes métier qui devraient être uniques ensemble. Si votre modèle de facture permet au maximum une rangée par article de stock sur une facture, la combinaison de WWIInvoiceID et StockItemKey devrait être unique.
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;
Vous pouvez également vérifier les doublons en utilisant une autre combinaison de colonnes métier, à titre heuristique plutôt que comme règle stricte. Il est rare que le même vendeur vende le même article stock au même client plus d’une fois le même jour, donc plus d’une rangée pour la combinaison de CustomerKey, StockItemKey, InvoiceDateKey, et SalespersonKey vaut la peine d’être examinée comme un possible doublon. Confirmez contre le système source avant de considérer une correspondance comme confirmée, car une commande répétée légitime le même jour est possible.
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 le contenu
Vérifiez que les valeurs correspondent à un ensemble ou une plage attendue. Par exemple, Quantity et UnitPrice doivent toujours être des nombres positifs.
SELECT SaleKey, Quantity, UnitPrice
FROM dbo.fact_sale
WHERE Quantity <= 0
OR UnitPrice <= 0;
Valider les données avec des fonctions d’IA
Pour des vérifications difficiles à exprimer comme de simples prédicats, utilisez des fonctions d’IA pour raisonner sur le contenu d’une colonne en langage naturel. Dans dbo.fact_sale, Description indique souvent si un produit est frais, congelé ou réfrigéré, vous pouvez donc utiliser AI_GENERATE_RESPONSE pour vérifier si cela correspond aux nombres TotalDryItems et TotalChillerItems de cette ligne. Définissez les instructions une fois comme une @prompt variable, puis passez les valeurs spécifiques à la ligne comme un argument de données séparé.
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;
Vérifiez les éventuelles incohérences avec le propriétaire du système source avant de corriger les données sources.