หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
นําไปใช้กับ:✅ Warehouse ใน Microsoft Fabric
หลังจาก ที่คุณสร้างตาราง และ โหลดข้อมูลเข้าไปแล้ว ให้ตรวจสอบความสมบูรณ์และถูกต้องของข้อมูลก่อนนําไปใช้ในการรายงานหรือการประมวลผลในขั้นตอนถัดไป
บทความนี้ให้ตัวอย่างง่าย ๆ และสมจริงของคําสั่งค้นหาการตรวจสอบและทําความสะอาดที่คุณสามารถรันกับdbo.fact_saleตารางที่สร้างใน Create tables in warehouse
ข้อกำหนดเบื้องต้น
เมื่อต้องการเริ่มต้นใช้งาน ให้ทําตามข้อกําหนดเบื้องต้นต่อไปนี้:
- มีสิทธิ์เข้าถึงรายการ Warehouse ภายในพื้นที่ทํางาน ความจุ Premium ที่มีสิทธิ์ผู้สนับสนุนหรือสูงกว่า
- อย่าลืมเชื่อมต่อกับสินค้าคลังสินค้าของคุณ คุณไม่สามารถรันคําสั่งค้นหาโดยตรงในปลายทาง SQL analytics ของคลังสินค้าได้
- เลือกเครื่องมือคิวรีของคุณ บทช่วยสอนนี้มีตัว แก้ไขคิวรี SQL ในพอร์ทัล Microsoft Fabric แต่คุณสามารถใช้เครื่องมือคิวรี T-SQL ใดก็ได้
- ให้
dbo.fact_saleตารางถูกเติมข้อมูลตามที่แสดงใน Create tables in warehouse
คําสั่งตรวจสอบความถูกต้องอาจมีตั้งแต่เงื่อนไขง่ายๆ (เช่น การตรวจสอบ NULL ค่า) ไปจนถึงการตรวจสอบที่ซับซ้อนขึ้นซึ่งใช้ ฟังก์ชัน AI ในตัวเพื่อประเมินความหมายหรือคุณภาพของข้อมูล เลือกระดับการตรวจสอบที่สอดคล้องกับความเสี่ยงและความสําคัญของข้อมูลที่คุณกําลังตรวจสอบ
ปฏิบัติต่อแถวที่ส่งกลับจากคําค้นเหล่านี้เป็นผู้สมัครสําหรับการตรวจสอบ ไม่ใช่ข้อผิดพลาดอัตโนมัติ ยืนยันกฎธุรกิจกับเจ้าของข้อมูลหรือเจ้าของระบบต้นทางก่อนแก้ไขหรือลบแถว และชอบแก้ไขซอร์สหรือการแปลงมากกว่าการอัปเดตแถวข้อเท็จจริงที่มีอยู่
ค้นหาแถวที่ค่าขาดหายไปในคอลัมน์
ใช้คําสั่งง่าย WHERE ๆ เพื่อค้นหาแถวที่ขาดค่าในคอลัมน์ที่จําเป็น การตรวจสอบนี้เป็นหนึ่งในการตรวจสอบที่เร็วและพบได้บ่อยที่สุดหลังจากโหลดข้อมูลเข้าสู่ตาราง
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;
ตรวจสอบความถูกต้องของการคํานวณ
เปรียบเทียบยอดรวมที่จัดเก็บไว้กับค่าที่คาดหวังเพื่อจับปัญหาคุณภาพข้อมูลที่เกิดขึ้นระหว่างการนําเข้าหรือการแปลงข้อมูล ตัวอย่างเช่น TotalIncludingTax ควรเท่ากับTotalExcludingTaxบวกเสมอTaxAmount เนื่องจากการเปรียบเทียบ SQL ไม่เคย NULL ถูกประเมินเป็น true ดังนั้นควรตรวจสอบจํานวนที่ขาดหายไปอย่างชัดเจนเพื่อไม่ให้แถวเหล่านั้นถูกตัดออกอย่างเงียบ ๆ
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);
ค้นหาแถวที่ซ้ํากัน
ตรวจสอบการรวมของคอลัมน์ธุรกิจที่ควรจะมีความซ้ําซ้อนร่วมกัน ถ้าโมเดลใบแจ้งหนี้ของคุณอนุญาตให้มีเพียงหนึ่งแถวต่อรายการสินค้าคงคลังในใบแจ้งหนี้ การรวมกันของ WWIInvoiceID และ StockItemKey ควรจะไม่ซ้ํากัน
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;
คุณยังสามารถตรวจสอบการซ้ําซ้อนโดยใช้การผสมผสานของคอลัมน์ธุรกิจที่แตกต่างกัน เป็นวิธีประเมินมากกว่ากฎที่เคร่งครัด เป็นเรื่องปกติที่พนักงานขายคนเดียวกันจะขายสินค้าคงคลังเดียวกันให้ลูกค้าคนเดียวกันมากกว่าหนึ่งครั้งในวันเดียวกัน ดังนั้นการมีมากกว่าหนึ่งแถวสําหรับการรวมของ CustomerKey, StockItemKey, InvoiceDateKey, และ SalespersonKey จึงควรตรวจสอบว่าอาจเป็นสินค้าซ้ํา ยืนยันกับระบบต้นทางก่อนที่จะถือว่าการจับคู่ได้รับการยืนยัน เพราะสามารถสั่งซื้อซ้ําที่ถูกต้องในวันเดียวกันได้
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;
ตรวจสอบเนื้อหา
ตรวจสอบว่าค่าต่าง ๆ อยู่ในชุดหรือช่วงที่คาดหวังหรือไม่ ตัวอย่างเช่น Quantity และ UnitPrice ควรเป็นจํานวนบวกเสมอ
SELECT SaleKey, Quantity, UnitPrice
FROM dbo.fact_sale
WHERE Quantity <= 0
OR UnitPrice <= 0;
ตรวจสอบข้อมูลด้วยฟังก์ชัน AI
สําหรับการตรวจสอบที่ยากจะอธิบายเป็นพรีดิเคตง่าย ๆ ให้ใช้ ฟังก์ชัน AI เพื่อวิเคราะห์เนื้อหาของคอลัมน์ในภาษาธรรมชาติ ใน dbo.fact_sale, Description มักจะระบุว่าผลิตภัณฑ์นั้นสด แช่แข็ง หรือแช่เย็น เพื่อให้คุณใช้ AI_GENERATE_RESPONSE ตรวจสอบว่ามันสอดคล้องกับแถว TotalDryItems นั้นและ TotalChillerItems จํานวนหรือไม่ กําหนดคําสั่งเพียงครั้งเดียวในฐานะตัวแปร @prompt และส่งค่าเฉพาะแถวเป็นอาร์กิวเมนต์ข้อมูลแยกต่างหาก
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;
ตรวจสอบความไม่สอดคล้องที่อาจเกิดขึ้นกับเจ้าของระบบต้นทางก่อนแก้ไขข้อมูลต้นทาง