ใช้พารามิเตอร์แบบเรียงซ้อนในรายงานที่มีการแบ่งหน้า
บทความนี้กําหนดเป้าหมายคุณในฐานะผู้สร้างรายงานที่ออกแบบรายงานที่มีการแบ่งหน้าของ Power BI ซึ่งมีสถานการณ์สําหรับพารามิเตอร์การเรียงการออกแบบ พารามิเตอร์การเรียงคือพารามิเตอร์รายงานที่มีการขึ้นต่อกัน เมื่อผู้ใช้รายงานเลือกค่าพารามิเตอร์ (หรือค่า) มันถูกใช้เพื่อตั้งค่าที่พร้อมใช้งานสําหรับพารามิเตอร์อื่น
หมายเหตุ
บทนําสู่พารามิเตอร์การเรียงและวิธีการกําหนดค่าไม่ได้ครอบคลุมในบทความนี้ ถ้าคุณไม่คุ้นเคยทั้งหมดกับพารามิเตอร์การเรียง เราขอแนะนําให้คุณอ่าน เพิ่มพารามิเตอร์การเรียงไปยังรายงานในตัวสร้างรายงาน Power BI
สถานการณ์การออกแบบ
มีสถานการณ์การออกแบบสองสถานการณ์สําหรับการใช้พารามิเตอร์การเรียง ซึ่งสามารถใช้เพื่อ:
- กรอง กลุ่มใหญ่ ของรายการ
- รายการที่เกี่ยวข้องปัจจุบัน
ฐานข้อมูลตัวอย่าง
ตัวอย่างที่แสดงในบทความนี้จะขึ้นอยู่กับฐานข้อมูล Azure SQL การดําเนินการขายของเรกคอร์ดฐานข้อมูล และประกอบด้วยตารางต่าง ๆ ที่จัดเก็บตัวแทนจําหน่าย ผลิตภัณฑ์ และใบสั่งขาย
ตารางมี ชื่อ ตัวแทนจําหน่าย ที่จัดเก็บหนึ่งเรคคอร์ ดสําหรับแต่ละตัวแทนจําหน่าย และยังประกอบด้วยบันทึกอีกหลายพัน ตาราง ผู้ จําหน่าย มีคอลัมน์เหล่านี้:
- โค้ดตัวแทนจําหน่าย (จํานวนเต็ม)
- ResellerName
- ประเทศ-ภูมิภาค
- รัฐ-จังหวัด
- City
- PostalCode
มีตารางที่ชื่อว่า ยอดขายด้วย ซึ่งจัดเก็บบันทึกการสั่งการขายและมีความสัมพันธ์หลักของต่างชาติไปยัง ตาราง ผู้ จําหน่าย ใน คอลัมน์ โค้ด ตัวแทนจําหน่าย
ตัวอย่างข้อกําหนด
มีข้อกําหนดในการพัฒนารายงานโปรไฟล์ตัวแทนจําหน่าย ต้องออกแบบรายงานเพื่อแสดงข้อมูลสําหรับผู้จําหน่ายรายเดียว มันไม่เหมาะสมที่จะมีผู้ใช้รายงานเข้าสู่โค้ดตัวแทนจําหน่าย เช่นเดียวกับที่นานๆ ครั้งจะบันทึก
กรองกลุ่มใหญ่ของรายการ
มาดูสามตัวอย่างเพื่อช่วยคุณจํากัดกลุ่มใหญ่ของรายการที่มีอยู่ เช่น ตัวแทนจําหน่าย คือ:
กรองตามคอลัมน์ที่เกี่ยวข้อง
ในตัวอย่างนี้ ผู้ใช้รายงานโต้ตอบกับห้าพารามิเตอร์รายงาน ต้องเลือกประเทศ-ภูมิภาค รัฐ-จังหวัด เมือง และรหัสไปรษณีย์ พารามิเตอร์สุดท้ายแล้วแสดงรายการตัวแทนจําหน่ายที่อยู่ในตําแหน่งที่ตั้งทางภูมิศาสตร์
นี่คือวิธีที่คุณสามารถพัฒนาพารามิเตอร์การเรียง:
สร้างห้าพารามิเตอร์รายงานที่ถูกสั่งในลําดับที่ถูกต้อง
สร้างกลุ่มข้อมูล ประเทศภูมิภาค ที่รับข้อมูลมาจากค่าประเทศ-ภูมิภาคที่แตกต่าง โดยการใช้คําสั่งคําถามดังต่อไปนี้:
SELECT DISTINCT [Country-Region] FROM [Reseller] ORDER BY [Country-Region]
สร้างกลุ่มข้อมูล รัฐจังหวัด ที่รับข้อมูลมาจากค่ารัฐ-จังหวัดที่แตกต่างกันสําหรับประเทศ-ภูมิภาคที่เลือก โดยการใช้คําสั่งคําถามดังต่อไปนี้:
SELECT DISTINCT [State-Province] FROM [Reseller] WHERE [Country-Region] = @CountryRegion ORDER BY [State-Province]
สร้างชุดข้อมูล เมือง ที่รับข้อมูลมาจากค่าเมืองสําหรับประเทศ-ภูมิภาคและรัฐ-จังหวัดที่เลือก โดยการใช้คําสั่งคําถามดังต่อไปนี้:
SELECT DISTINCT [City] FROM [Reseller] WHERE [Country-Region] = @CountryRegion AND [State-Province] = @StateProvince ORDER BY [City]
ดําเนินการรูปแบบนี้ต่อเพื่อสร้างชุดข้อมูลรหัสไปรษณีย์
สร้างกลุ่มข้อมูล ตัวแทนจําหน่าย ที่รับข้อมูลมาจากตัวแทนจําหน่ายทั้งหมดสําหรับค่าทางภูมิศาสตร์ที่เลือก โดยการใช้คําสั่งคําถามดังต่อไปนี้:
SELECT [ResellerCode], [ResellerName] FROM [Reseller] WHERE [Country-Region] = @CountryRegion AND [State-Province] = @StateProvince AND [City] = @City AND [PostalCode] = @PostalCode ORDER BY [ResellerName]
สําหรับแต่ละชุดข้อมูลยกเว้นชุดแรก แมปพารามิเตอร์คิวรีไปยังพารามิเตอร์รายงานที่สอดคล้องกัน
หมายเหตุ
พารามิเตอร์คิวรีทั้งหมด (นําหน้าด้วยสัญลักษณ์ @) ที่แสดงในตัวอย่างเหล่านี้สามารถฝังตัวภายในคําสั่ง SELECT หรือถูกส่งผ่านไปยังขั้นตอนการจัดเก็บได้
โดยทั่วไปขั้นตอนการจัดเก็บคือวิธีการออกแบบที่ดีกว่า เนื่องจากแผนคิวรีของพวกเขาถูกแคชสําหรับการดําเนินการที่รวดเร็วและช่วยให้คุณพัฒนาตรรกะที่ซับซ้อนมากขึ้นเมื่อจําเป็น อย่างไรก็ตาม ก็ไม่ได้รับการสนับสนุนสําหรับแหล่งข้อมูลเกตเวย์เชิงสัมพันธ์ซึ่งหมายความว่า SQL Server Oracle และ Teradata
สุดท้ายแล้ว คุณควรแน่ใจว่าดัชนีที่เหมาะสมมีอยู่เพื่อสนับสนุนการเรียกข้อมูลที่มีประสิทธิภาพ มิฉะนั้น พารามิเตอร์รายงานของคุณสามารถเติมข้อมูลช้าและฐานข้อมูลจะเป็นภาระหนักเกินไป สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการทําดัชนีเซิร์ฟเวอร์ SQL ดู คู่มือสถาปัตยกรรมและการออกแบบ SQL Server Index
กรองตามคอลัมน์การจัดกลุ่ม
ในตัวอย่างนี้ ผู้ใช้รายงานโต้ตอบกับพารามิเตอร์รายงานเพื่อเลือกตัวอักษรตัวแรกของผู้จําหน่าย พารามิเตอร์ตัวที่สองได้แสดงรายการตัวแทนจําหน่ายเมื่อชื่อเริ่มต้นด้วยตัวอักษรที่เลือก
นี่คือวิธีที่คุณสามารถพัฒนาพารามิเตอร์การเรียง:
สร้าง กลุ่มรายงาน และ ตัวแทนจําหน่าย ของพารามิเตอร์รายงานตามลําดับที่ถูกต้อง
สร้างชุดข้อมูลกลุ่มรายงานเพื่อดึงตัวอักษรแรกที่ใช้โดยผู้จําหน่ายทั้งหมดโดยใช้คําสั่งคําถามต่อไปนี้:
SELECT DISTINCT LEFT([ResellerName], 1) AS [ReportGroup] FROM [Reseller] ORDER BY [ReportGroup]
สร้างกลุ่มข้อมูล ตัวแทนจําหน่าย ที่รับข้อมูลมาจากตัวแทนจําหน่ายทั้งหมดที่เริ่มด้วยตัวอักษรที่เลือก โดยการใช้คําสั่งคําถามดังต่อไปนี้:
SELECT [ResellerCode], [ResellerName] FROM [Reseller] WHERE LEFT([ResellerName], 1) = @ReportGroup ORDER BY [ResellerName]
แมปพารามิเตอร์คิวรีของ ชุดข้อมูลตัวแทนจําหน่าย ไปยังพารามิเตอร์รายงานที่สอดคล้องกัน
มีประสิทธิภาพมากขึ้นเมื่อเพิ่มคอลัมน์การจัดกลุ่มไปยัง ตาราง ผู้ จําหน่าย เมื่อยังคงมีอยู่และทําดัชนีจะมอบผลลัพธ์ที่ดีที่สุด สําหรับข้อมูลเพิ่มเติม ดูระบุคอลัมน์จากการคํานวณในตาราง
ALTER TABLE [Reseller]
ADD [ReportGroup] AS LEFT([ResellerName], 1) PERSISTED
เทคนิคนี้สามารถส่งมอบศักยภาพได้มากยิ่งขึ้น พิจารณาสคริปต์ต่อไปนี้ที่เพิ่มคอลัมน์ที่จัดกลุ่มใหม่เพื่อกรองตัวแทนจําหน่ายโดย ตัวอักษรที่กําหนดแถบไว้ล่วงหน้า นอกจากนี้ยังสร้างดัชนีเพื่อดึงข้อมูลที่จําเป็นโดยพารามิเตอร์รายงานอย่างมีประสิทธิภาพ
ALTER TABLE [Reseller]
ADD [ReportGroup2] AS CASE
WHEN [ResellerName] LIKE '[A-C]%' THEN 'A-C'
WHEN [ResellerName] LIKE '[D-H]%' THEN 'D-H'
WHEN [ResellerName] LIKE '[I-M]%' THEN 'I-M'
WHEN [ResellerName] LIKE '[N-S]%' THEN 'N-S'
WHEN [ResellerName] LIKE '[T-Z]%' THEN 'T-Z'
ELSE '[Other]'
END PERSISTED
GO
CREATE NONCLUSTERED INDEX [Reseller_ReportGroup2]
ON [Reseller] ([ReportGroup2]) INCLUDE ([ResellerCode], [ResellerName])
GO
กรองตามรูปแบบการค้นหา
ในตัวอย่างนี้ ผู้ใช้รายงานโต้ตอบกับพารามิเตอร์รายงานเพื่อป้อนรูปแบบการค้นหา พารามิเตอร์ตัวที่สองได้แสดงรายการตัวแทนจําหน่ายเมื่อชื่อมีรูปแบบ
นี่คือวิธีที่คุณสามารถพัฒนาพารามิเตอร์การเรียง:
สร้างการค้นหาและตัวแทนจําหน่ายของพารามิเตอร์รายงานตามลําดับที่ถูกต้อง
สร้างกลุ่มข้อมูล ตัวแทนจําหน่าย ที่รับข้อมูลมาจากตัวแทนจําหน่ายทั้งหมดที่ประกอบด้วยข้อความค้นหา โดยการใช้คําสั่งคําถามดังต่อไปนี้:
SELECT [ResellerCode], [ResellerName] FROM [Reseller] WHERE [ResellerName] LIKE '%' + @Search + '%' ORDER BY [ResellerName]
แมปพารามิเตอร์คิวรีของ ชุดข้อมูลตัวแทนจําหน่าย ไปยังพารามิเตอร์รายงานที่สอดคล้องกัน
เคล็ดลับ
คุณสามารถปรับปรุงการออกแบบนี้เพื่อให้สามารถควบคุมผู้ใช้รายงานของคุณได้มากขึ้น ซึ่งช่วยให้พวกเขากําหนดค่าการจับคู่รูปแบบของตนเอง ตัวอย่างเช่น ค่าการค้นหา "สีแดง%" จะกรองให้กับตัวแทนจําหน่ายที่มีชื่อที่ เริ่มต้น ด้วยอักขระ "สีแดง"
สําหรับข้อมูลเพิ่มเติม ดูถูกใจ (ทําธุรกรรม-SQL)
นี่คือวิธีที่คุณสามารถให้ผู้ใช้รายงานกําหนดรูปแบบของตนเอง
WHERE
[ResellerName] LIKE @Search
อย่างไรก็ตาม สําหรับผู้เชี่ยวชาญที่ไม่ใช่ฐานข้อมูลจํานวนมากนั้น ก็ไม่ทราบเกี่ยวกับเปอร์เซ็นต์ของ (%) อักขระตัวแทน แต่พวกเขาจะคุ้นเคยกับอักขระเครื่องหมาย (*) โดยการปรับเปลี่ยนส่วนคําสั่ง WHERE คุณสามารถอนุญาตให้พวกเขาใช้อักขระนี้ได้
WHERE
[ResellerName] LIKE SUBSTITUTE(@Search, '%', '*')
รายการที่เกี่ยวข้องปัจจุบัน
ในสถานการณ์นี้ คุณสามารถใช้ข้อมูลจริงเพื่อจํากัดค่าที่มีอยู่ได้ ผู้ใช้รายงานจะแสดงด้วยรายการที่มีการบันทึกกิจกรรม
ในตัวอย่างนี้ ผู้ใช้รายงานโต้ตอบกับสามพารามิเตอร์รายงาน สองชุดแรกที่ตั้งค่าช่วงวันที่ของวันที่การสั่งการขาย พารามิเตอร์ที่สามแล้วแสดงรายการตัวแทนจําหน่ายที่มีการสร้างคําสั่งซื้อในระหว่างช่วงเวลานั้น
นี่คือวิธีที่คุณสามารถพัฒนาพารามิเตอร์การเรียง:
สร้าง OrderDateStart, OrderDateEnd และตัวแทนจําหน่ายของพารามิเตอร์รายงานตามลําดับที่ถูกต้อง
สร้างกลุ่มข้อมูล ตัวแทนจําหน่าย ที่รับข้อมูลมาจากตัวแทนจําหน่ายทั้งหมดที่สร้างการสั่งในระยะเวลาวันที่นี้ โดยการใช้คําสั่งคําถามดังต่อไปนี้:
SELECT DISTINCT [r].[ResellerCode], [r].[ResellerName] FROM [Reseller] AS [r] INNER JOIN [Sales] AS [s] ON [s].[ResellerCode] = [r].[ResellerCode] WHERE [s].[OrderDate] >= @OrderDateStart AND [s].[OrderDate] < DATEADD(DAY, 1, @OrderDateEnd) ORDER BY [r].[ResellerName]
การแนะนำ
เราขอแนะนําให้คุณออกแบบรายงานของคุณด้วยพารามิเตอร์การเรียง เมื่อใดก็ตามที่เป็นไปได้ เนื่องจากพวกเขา:
- มอบประสบการณ์ใช้งานที่ใช้งานง่ายและเป็นประโยชน์สําหรับผู้ใช้รายงานของคุณ
- มีประสิทธิภาพเนื่องจากพวกเขาดึงชุดที่มีขนาดเล็กกว่าของค่าที่มีอยู่
ตรวจสอบให้แน่ใจว่าได้ปรับแหล่งข้อมูลของคุณให้เหมาะสมโดย:
- การใช้ขั้นตอนที่จัดเก็บไว้ เมื่อใดก็ตามที่เป็นไปได้
- การเพิ่มดัชนีที่เหมาะสมสําหรับการดึงข้อมูลที่มีประสิทธิภาพ
- ค่าคอลัมน์ที่ปรากฏขึ้น—และแม้แต่แถว—เพื่อหลีกเลี่ยงการประเมินเวลาคิวรีที่มีราคาแพง
เนื้อหาที่เกี่ยวข้อง
สําหรับข้อมูลเพิ่มเติมที่เกี่ยวข้องกับบทความนี้ โปรดดูทรัพยากรต่อไปนี้:
คำติชม
https://aka.ms/ContentUserFeedback
เร็วๆ นี้: ตลอดปี 2024 เราจะขจัดปัญหา GitHub เพื่อเป็นกลไกคำติชมสำหรับเนื้อหา และแทนที่ด้วยระบบคำติชมใหม่ สำหรับข้อมูลเพิ่มเติม ให้ดู:ส่งและดูข้อคิดเห็นสำหรับ