ใช้พารามิเตอร์การเรียงในรายงานที่มีเลขหน้า
บทความนี้มุ่งไปที่คุณเช่นเดียวกับผู้เขียนรายงานที่ออกแบบ Power BI รายงานที่มีเลขหน้า. มันมีเหตุการณ์สำหรับพารามิเตอร์การเรียงที่ออกแบบ พารามิเตอร์การเรียงคือพารามิเตอร์รายงานด้วยความเชื่อมโยง เมื่อผู้ใช้การรายงานเลือกค่าพารามิเตอร์ (หรือค่า) มันถูกใช้เพื่อตั้งค่าที่มีอยู่สำหรับพารามิเตอร์อื่นๆ
หมายเหตุ
บทนำสู่พารามิเตอร์การเรียงและวิธีปรับ ไม่ได้ครอบคลุมในบทความนี้ หากคุณไม่ได้คุ้นเคยทั้งหมดกับพารามิเตอร์การเรียง เราแนะนำให้คุณอ่าน เพิ่มพารามิเตอร์การเรียงไปยังรายงาน (Report Builder และ SSRS)
เหตุการณ์การออกแบบ
มีเหตุการณ์ออกแบบสองเหตุการณ์สำหรับการใช้พารามิเตอร์การเรียง สิ่งเหล่านั้นสามารถมีประสิทธิผลใที่ช้กับ:
- ตัวกรอง กลุ่มใหญ่ ของรายการ
- รายการ ที่สำคัญ ปัจจุบัน
ฐานข้อมูลตัวอย่าง
ตัวอย่างที่ได้แสดงในบทความนี้อยู่บนฐานของฐานข้อมูล Azure SQL การดำเนินการขายการบันทึกฐานข้อมูลและประกอบด้วยตารางที่หลากหลายที่จัดเก็บตัวแทนจำหน่าย
ตารางมีชื่อ ตัวแทนจำหน่าย ที่จัดเก็บหนึ่งบันทึกของแต่ละตัวแทนจำหน่าย และยังประกอบด้วยบันทึกอีกหลายพัน ตาราง ตัวแทนจำนห่าย มีแถวเหล่านี้:
- โค้ดตัวแทนจำหน่าย (จำนวนเต็ม)
- ชื่อตัวแทนจำนห่าย
- ประเทศ-ภูมิภาค
- รัฐ-จังหวัด
- เมือง
- รหัสไปรษณีย์
มีชื่อตาราง การขาย ด้วย มีการจัดเก็บบันทึกการสั่งการขายและมีความสัมพันธ์หลักของต่างชาติไปยัง ตาราง ตัวแทนจำหน่าย ในแถว โค้ดตัวแทนจำหน่าย
ตัวอย่างข้อกำหนด
มีข้อกำหนดเพื่อปรับปรุงรายงานประวัติตัวแทนจำหน่าย รายงานต้องถูกออกแบบเพื่อแสดงข้อมูลสำหรับตัวแทนจำหน่ายผู้เดียว มันไม่เหมาะสมที่จะมีผู้ใช้การรายงานเข้าสู่โค้ดตัวแทนจำหน่าย เช่นเดียวกับที่นานๆ ครั้งจะบันทึก
ตัวกรองกลุ่มใหญ่ของรายการ
มาดูสามตัวอย่างเพื่อช่วยคุณจำกัดกลุ่มใหญ่ของรายการที่มีอยู่ เช่นตัวแทนจำหน่าย คือ:
ตัวกรองโดยแถวที่เกี่ยวข้อง
ในตัวอย่างนี้ ผู้ใช้การรายงานโต้ตอบกับห้าพารามิเตอร์รายงาน ต้องเลือกประเทศ-ภูมิภาค รัฐ-จังหวัด เมือง และรหัสไปรษณีย์ พรารามิเตอร์สุดท้ายที่รายการตัวแทนจำหน่ายที่มีอยู่ในตำแหน่งตามภูมิศาสตร์

นี่คือวิธีที่คุณสามารถปรับปรุงพารามิเตอร์การเรียง:
สร้างห้าพารามิเตอร์รายงาน ที่ถูกสั่งในลำดับที่ถูกต้อง
สร้างกลุ่มข้อมูล ประเทศภูมิภาค ที่รับข้อมูลมาจากค่าประเทศ-ภูมิภาคที่แตกต่าง โดยการใช้คำสั่งคำถามดังต่อไปนี้:
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]สำหรับแต่ละกลุ่มข้อมูลยกเว้นอันแรก แมปพารามิเตอร์คำถามไปยังพารามิเตอร์รายงานที่เหมือนกัน
หมายเหตุ
ทุกพารามิเตอร์คำถาม (ใส่คำนำหน้าด้วยสัญลักษณ์ @) ที่แสดงในตัวอย่างเหล่านี้ที่สามารถฝังตัวเข้ากับคำสั่ง เลือก หรือถูกส่งผ่านเข้าไปขั้นตอนการจัดเก็บ
โดยทั่วไปขั้นตอนการจัดเก็บคือการเข้าสู่การออกแบบที่ดีขึ้น เพราะว่าแผนคำถามนั้นถูกแคชสำหรับการกระทำการแบบรวดเร็ว และยังอนุญาตให้คุณปรับปรุงตรรกะที่ซับซ้อนได้มากกว่าเมื่อต้องการ อย่างไรก็ตามก็ไม่สามารถสนับสนุนได้ตอนนี้สำหรับแหล่งข้อมูลเกตเวย์ที่สัมพันธ์กัน ซึ่งหมายความว่า SQL Server Oracle และ Teradata
สุดท้ายแล้ว คุณควรแน่ใจว่าดัชนีที่เหมาะสมปรากฏในการสนับสนุนการกู้คืนข้อมูลที่มีประสิทธิภาพ มิฉะนั้น พารามิเตอร์รายงานของคุณสามารถอาศัยอยู่อย่างช้าๆ และฐานข้อมูลจะเป็นภาระหนักเกินไป สำหรับข้อมูลเพิ่มเติมเกี่ยวกับดัชนีเซิร์ฟเวอร์ SQL ดู คำแนะนำระบบโครงสร้างดัชนีเซิร์ฟเวอร์ SQL และการออกแบบ
ตัวกรองโดยแถวที่จัดกลุ่ม
ในตัวอย่างนี้ ผู้ใช้การรายงานโต้ตอบกับพารามิเตอร์รายงานเพื่อเลือกตัวอักษรตัวแรกไปยังตัวแทนจำหน่าย พารามิเตอร์ตัวที่สองได้แสดงรายการตัวแทนจำหน่ายเมื่อชื่อเริ่มต้นด้วยอักษรที่เลือก

นี่คือวิธีที่คุณสามารถปรับปรุงพารามิเตอร์การเรียง:
สร้าง กลุ่มรายงาน และ ตัวแทนจำหน่าย ของพารามิเตอร์รายงานตามลำดับที่ถูกต้อง
สร้างชุดข้อมูล กลุ่มรายงาน เพื่อดึงตัวอักษรแรกที่ใช้โดยผู้ตัวแทนจำหน่ายทั้งหมดโดยใช้คำสั่งแบบสอบถามต่อไปนี้:
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, '%', '*')
รายการที่สำคัญปัจจุบัน
ในสถานการณ์นี้ คุณสามารถใช้ข้อมูลจริงเพื่อจำกัดค่าที่มีอยู่ได้ ผู้ใช้รายงานจะถูกแสดงด้วยรายการที่มีการบันทึกกิจกรรม
ในตัวอย่างนี้ ผู้ใช้รายงานโต้ตอบกับสามพารามิเตอร์รายงาน สองชุดแรกที่ตั้งค่าช่วงวันที่ของวันที่การสั่งการขาย พารามิเตอร์ที่สามแล้วแสดงรายการตัวแทนจำหน่ายที่การสั่งได้ถูกสร้างระหว่างระยะเวลานั้น

นี่คือวิธีที่คุณสามารถปรับปรุงพารามิเตอร์การเรียง:
สร้าง เริ่มวันที่คำสั่งซื้อ สิ้นสุดวันที่คำสั่งซื้อ และ ตัวแทนจำหน่าย ของพารามิเตอร์รายงานตามลำดับที่ถูกต้อง
สร้างกลุ่มข้อมูล ตัวแทนจำหน่าย ที่รับข้อมูลมาจากตัวแทนจำหน่ายทั้งหมดที่สร้างการสั่งในระยะเวลาวันที่นั้น โดยการใช้คำสั่งคำถามดังต่อไปนี้:
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]
คำแนะนำ
เราขอแนะนำให้คุณออกแบบรายงานของคุณด้วยพารามิเตอร์การเรียง เมื่อใดก็ตามที่เป็นไปได้ เนื่องจากพวกเขา:
- มอบประสบการณ์ที่เกิดขึ้นได้เองและเป็นประโยชน์สำหรับผู้ใช้การรายงานของคุณ
- มีประสิทธิภาพเนื่องจากพวกเขาดึงข้อมูลชุดที่มีขนาดเล็กกว่าของค่าที่มีอยู่
ตรวจสอบให้แน่ใจว่ามีการปรับให้เหมาะสมกับแหล่งข้อมูลของคุณโดย:
- การใช้ขั้นตอนที่จัดเก็บไว้ เมื่อใดก็ตามที่เป็นไปได้
- การเพิ่มดัชนีที่เหมาะสมสำหรับการดึงข้อมูลที่มีประสิทธิภาพ
- ค่าคอลัมน์ที่ปรากฏจริง—และแม้แต่แถว—เพื่อหลีกเลี่ยงการประเมินเวลาแบบสอบถามที่มีราคาแพง
ขั้นตอนถัดไป
สำหรับข้อมูลเพิ่มเติมที่เกี่ยวข้องกับบทความนี้ โปรดดูทรัพยากรต่อไปนี้: