ใช้พารามิเตอร์การเรียงในรายงานที่มีเลขหน้า

บทความนี้มุ่งไปที่คุณเช่นเดียวกับผู้เขียนรายงานที่ออกแบบ Power BI รายงานที่มีเลขหน้า. มันมีเหตุการณ์สำหรับพารามิเตอร์การเรียงที่ออกแบบ พารามิเตอร์การเรียงคือพารามิเตอร์รายงานด้วยความเชื่อมโยง เมื่อผู้ใช้การรายงานเลือกค่าพารามิเตอร์ (หรือค่า) มันถูกใช้เพื่อตั้งค่าที่มีอยู่สำหรับพารามิเตอร์อื่นๆ

หมายเหตุ

บทนำสู่พารามิเตอร์การเรียงและวิธีปรับ ไม่ได้ครอบคลุมในบทความนี้ หากคุณไม่ได้คุ้นเคยทั้งหมดกับพารามิเตอร์การเรียง เราแนะนำให้คุณอ่าน เพิ่มพารามิเตอร์การเรียงไปยังรายงาน (Report Builder และ SSRS)

เหตุการณ์การออกแบบ

มีเหตุการณ์ออกแบบสองเหตุการณ์สำหรับการใช้พารามิเตอร์การเรียง สิ่งเหล่านั้นสามารถมีประสิทธิผลใที่ช้กับ:

  • ตัวกรอง กลุ่มใหญ่ ของรายการ
  • รายการ ที่สำคัญ ปัจจุบัน

ฐานข้อมูลตัวอย่าง

ตัวอย่างที่ได้แสดงในบทความนี้อยู่บนฐานของฐานข้อมูล Azure SQL การดำเนินการขายการบันทึกฐานข้อมูลและประกอบด้วยตารางที่หลากหลายที่จัดเก็บตัวแทนจำหน่าย

ตารางมีชื่อ ตัวแทนจำหน่าย ที่จัดเก็บหนึ่งบันทึกของแต่ละตัวแทนจำหน่าย และยังประกอบด้วยบันทึกอีกหลายพัน ตาราง ตัวแทนจำนห่าย มีแถวเหล่านี้:

  • โค้ดตัวแทนจำหน่าย (จำนวนเต็ม)
  • ชื่อตัวแทนจำนห่าย
  • ประเทศ-ภูมิภาค
  • รัฐ-จังหวัด
  • เมือง
  • รหัสไปรษณีย์

มีชื่อตาราง การขาย ด้วย มีการจัดเก็บบันทึกการสั่งการขายและมีความสัมพันธ์หลักของต่างชาติไปยัง ตาราง ตัวแทนจำหน่าย ในแถว โค้ดตัวแทนจำหน่าย

ตัวอย่างข้อกำหนด

มีข้อกำหนดเพื่อปรับปรุงรายงานประวัติตัวแทนจำหน่าย รายงานต้องถูกออกแบบเพื่อแสดงข้อมูลสำหรับตัวแทนจำหน่ายผู้เดียว มันไม่เหมาะสมที่จะมีผู้ใช้การรายงานเข้าสู่โค้ดตัวแทนจำหน่าย เช่นเดียวกับที่นานๆ ครั้งจะบันทึก

ตัวกรองกลุ่มใหญ่ของรายการ

มาดูสามตัวอย่างเพื่อช่วยคุณจำกัดกลุ่มใหญ่ของรายการที่มีอยู่ เช่นตัวแทนจำหน่าย คือ:

ในตัวอย่างนี้ ผู้ใช้การรายงานโต้ตอบกับห้าพารามิเตอร์รายงาน ต้องเลือกประเทศ-ภูมิภาค รัฐ-จังหวัด เมือง และรหัสไปรษณีย์ พรารามิเตอร์สุดท้ายที่รายการตัวแทนจำหน่ายที่มีอยู่ในตำแหน่งตามภูมิศาสตร์

ภาพหน้าจอของพารามิเตอร์รายงานแบบแบ่งหน้าของ Power BI ที่แสดงตัวกรองตามคอลัมน์ที่เกี่ยวข้อง

นี่คือวิธีที่คุณสามารถปรับปรุงพารามิเตอร์การเรียง:

  1. สร้างห้าพารามิเตอร์รายงาน ที่ถูกสั่งในลำดับที่ถูกต้อง

  2. สร้างกลุ่มข้อมูล ประเทศภูมิภาค ที่รับข้อมูลมาจากค่าประเทศ-ภูมิภาคที่แตกต่าง โดยการใช้คำสั่งคำถามดังต่อไปนี้:

    SELECT DISTINCT
      [Country-Region]
    FROM
      [Reseller]
    ORDER BY
      [Country-Region]
    
  3. สร้างกลุ่มข้อมูล รัฐจังหวัด ที่รับข้อมูลมาจากค่ารัฐ-จังหวัดที่แตกต่างกันสำหรับประเทศ-ภูมิภาคที่เลือก โดยการใช้คำสั่งคำถามดังต่อไปนี้:

    SELECT DISTINCT
      [State-Province]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
    ORDER BY
      [State-Province]
    
  4. สร้างกลุ่มข้อมูล เมือง ที่รับข้อมูลมาจากค่าเมืองสำหรับประเทศ-ภูมิภาคและรัฐ-จังหวัดที่เลือก โดยการใช้คำสั่งคำถามดังต่อไปนี้:

    SELECT DISTINCT
      [City]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
      AND [State-Province] = @StateProvince
    ORDER BY
      [City]
    
  5. ดำเนินการรูปแบบนี้ต่อเพื่อสร้างกลุ่มข้อมูล รหัสไปรษณีย์

  6. สร้างกลุ่มข้อมูล ตัวแทนจำหน่าย ที่รับข้อมูลมาจากตัวแทนจำหน่ายทั้งหมดสำหรับค่าตามภูมิศาสตร์ที่เลือก โดยการใช้คำสั่งคำถามดังต่อไปนี้:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      [Country-Region] = @CountryRegion
      AND [State-Province] = @StateProvince
      AND [City] = @City
      AND [PostalCode] = @PostalCode
    ORDER BY
      [ResellerName]
    
  7. สำหรับแต่ละกลุ่มข้อมูลยกเว้นอันแรก แมปพารามิเตอร์คำถามไปยังพารามิเตอร์รายงานที่เหมือนกัน

หมายเหตุ

ทุกพารามิเตอร์คำถาม (ใส่คำนำหน้าด้วยสัญลักษณ์ @) ที่แสดงในตัวอย่างเหล่านี้ที่สามารถฝังตัวเข้ากับคำสั่ง เลือก หรือถูกส่งผ่านเข้าไปขั้นตอนการจัดเก็บ

โดยทั่วไปขั้นตอนการจัดเก็บคือการเข้าสู่การออกแบบที่ดีขึ้น เพราะว่าแผนคำถามนั้นถูกแคชสำหรับการกระทำการแบบรวดเร็ว และยังอนุญาตให้คุณปรับปรุงตรรกะที่ซับซ้อนได้มากกว่าเมื่อต้องการ อย่างไรก็ตามก็ไม่สามารถสนับสนุนได้ตอนนี้สำหรับแหล่งข้อมูลเกตเวย์ที่สัมพันธ์กัน ซึ่งหมายความว่า SQL Server Oracle และ Teradata

สุดท้ายแล้ว คุณควรแน่ใจว่าดัชนีที่เหมาะสมปรากฏในการสนับสนุนการกู้คืนข้อมูลที่มีประสิทธิภาพ มิฉะนั้น พารามิเตอร์รายงานของคุณสามารถอาศัยอยู่อย่างช้าๆ และฐานข้อมูลจะเป็นภาระหนักเกินไป สำหรับข้อมูลเพิ่มเติมเกี่ยวกับดัชนีเซิร์ฟเวอร์ SQL ดู คำแนะนำระบบโครงสร้างดัชนีเซิร์ฟเวอร์ SQL และการออกแบบ

ตัวกรองโดยแถวที่จัดกลุ่ม

ในตัวอย่างนี้ ผู้ใช้การรายงานโต้ตอบกับพารามิเตอร์รายงานเพื่อเลือกตัวอักษรตัวแรกไปยังตัวแทนจำหน่าย พารามิเตอร์ตัวที่สองได้แสดงรายการตัวแทนจำหน่ายเมื่อชื่อเริ่มต้นด้วยอักษรที่เลือก

ภาพหน้าจอของพารามิเตอร์รายงานแบบแบ่งหน้าของ Power BI ที่แสดงตัวกรองตามคอลัมน์การจัดกลุ่ม

นี่คือวิธีที่คุณสามารถปรับปรุงพารามิเตอร์การเรียง:

  1. สร้าง กลุ่มรายงาน และ ตัวแทนจำหน่าย ของพารามิเตอร์รายงานตามลำดับที่ถูกต้อง

  2. สร้างชุดข้อมูล กลุ่มรายงาน เพื่อดึงตัวอักษรแรกที่ใช้โดยผู้ตัวแทนจำหน่ายทั้งหมดโดยใช้คำสั่งแบบสอบถามต่อไปนี้:

    SELECT DISTINCT
      LEFT([ResellerName], 1) AS [ReportGroup]
    FROM
      [Reseller]
    ORDER BY
      [ReportGroup]
    
  3. สร้างกลุ่มข้อมูล ตัวแทนจำหน่าย ที่รับข้อมูลมาจากตัวแทนจำหน่ายทั้งหมดที่เริ่มด้วยตัวอักษรที่เลือก โดยการใช้คำสั่งคำถามดังต่อไปนี้:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      LEFT([ResellerName], 1) = @ReportGroup
    ORDER BY
      [ResellerName]
    
  4. แมปพารามิเตอร์คำถามของชุดข้อมูล ตัวแทนจำหน่าย ไปยังพารามิเตอร์รายงานที่สอดคล้องกัน

มีประสิทธิภาพมากขึ้นเมื่อเพิ่มแถวที่จัดกลุ่มไปยังตาราง ตัวแทนจำหน่าย เมื่อยังคงมีอยู่และทำดัชนีจะมอบผลลัพธ์ที่ดีที่สุด สำหรับข้อมูลเพิ่มเติม ดูระบุแถวที่ได้รับการคำนวณในตาราง

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

ตัวกรองโดยรูปแบบการค้นหา

ในตัวอย่างนี้ ผู้ใช้การรายงานโต้ตอบกับพารามิเตอร์รายงานเพื่อใส่การเลือกรูปแบบ พารามิเตอร์ตัวที่สองได้แสดงรายการตัวแทนจำหน่ายเมื่อชื่อประกอบด้วยรูปแบบ

ภาพหน้าจอของพารามิเตอร์รายงานแบบแบ่งหน้าของ Power BI ที่แสดงตัวกรองตามรูปแบบการค้นหา

นี่คือวิธีที่คุณสามารถปรับปรุงพารามิเตอร์การเรียง:

  1. สร้าง การค้นหา และ ตัวแทนจำหน่าย ของพารามิเตอร์รายงานตามลำดับที่ถูกต้อง

  2. สร้างกลุ่มข้อมูล ตัวแทนจำหน่าย ที่รับข้อมูลมาจากตัวแทนจำหน่ายทั้งหมดที่ประกอบด้วยข้อความค้นหา โดยการใช้คำสั่งคำถามดังต่อไปนี้:

    SELECT
      [ResellerCode],
      [ResellerName]
    FROM
      [Reseller]
    WHERE
      [ResellerName] LIKE '%' + @Search + '%'
    ORDER BY
      [ResellerName]
    
  3. แมปพารามิเตอร์คำถามของชุดข้อมูล ตัวแทนจำหน่าย ไปยังพารามิเตอร์รายงานที่สอดคล้องกัน

เคล็ดลับ

คุณสามารถปรับปรุงการออกแบบนี้เพื่อให้สามารถควบคุมผู้ใช้รายงานของคุณได้มากขึ้น ซึ่งช่วยให้พวกเขาสามารถกำหนดค่าการจับคู่รูปแบบของตนเอง สำหรับตัวอย่าง เช่น ค่าการค้นหา "สีแดง%" จะกรองให้กับตัวแทนจำหน่ายที่มีชื่อที่ เริ่มต้น กับอักขระ "สีแดง"

สำหรับข้อมูลเพิ่มเติม ดู ถูกใจ (ทำการค้า-SQL)

นี่คือวิธีที่คุณสามารถให้ผู้ใช้รายงานกำหนดรูปแบบของตนเอง

WHERE
  [ResellerName] LIKE @Search

อย่างไรก็ตามสำหรับผู้เชี่ยวชาญที่ไม่ใช่ฐานข้อมูลจำนวนมากนั้น ก็ไม่ทราบเกี่ยวกับเปอร์เซ็นต์ของ (%) อักขระตัวแทน แต่พวกเขาจะคุ้นเคยกับอักขระเครื่องหมาย (*) โดยการปรับเปลี่ยนส่วนคำสั่ง WHERE คุณสามารถอนุญาตให้พวกเขาใช้อักขระนี้ได้

WHERE
  [ResellerName] LIKE SUBSTITUTE(@Search, '%', '*')

รายการที่สำคัญปัจจุบัน

ในสถานการณ์นี้ คุณสามารถใช้ข้อมูลจริงเพื่อจำกัดค่าที่มีอยู่ได้ ผู้ใช้รายงานจะถูกแสดงด้วยรายการที่มีการบันทึกกิจกรรม

ในตัวอย่างนี้ ผู้ใช้รายงานโต้ตอบกับสามพารามิเตอร์รายงาน สองชุดแรกที่ตั้งค่าช่วงวันที่ของวันที่การสั่งการขาย พารามิเตอร์ที่สามแล้วแสดงรายการตัวแทนจำหน่ายที่การสั่งได้ถูกสร้างระหว่างระยะเวลานั้น

ภาพหน้าจอของพารามิเตอร์รายงานแบบแบ่งหน้าของ Power BI ที่แสดงพารามิเตอร์รายงานสามพารามิเตอร์: เริ่มวันที่คำสั่งซื้อ สิ้นสุดวันที่คำสั่งซื้อและตัวแทนจำหน่าย

นี่คือวิธีที่คุณสามารถปรับปรุงพารามิเตอร์การเรียง:

  1. สร้าง เริ่มวันที่คำสั่งซื้อ สิ้นสุดวันที่คำสั่งซื้อ และ ตัวแทนจำหน่าย ของพารามิเตอร์รายงานตามลำดับที่ถูกต้อง

  2. สร้างกลุ่มข้อมูล ตัวแทนจำหน่าย ที่รับข้อมูลมาจากตัวแทนจำหน่ายทั้งหมดที่สร้างการสั่งในระยะเวลาวันที่นั้น โดยการใช้คำสั่งคำถามดังต่อไปนี้:

    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]
    

คำแนะนำ

เราขอแนะนำให้คุณออกแบบรายงานของคุณด้วยพารามิเตอร์การเรียง เมื่อใดก็ตามที่เป็นไปได้ เนื่องจากพวกเขา:

  • มอบประสบการณ์ที่เกิดขึ้นได้เองและเป็นประโยชน์สำหรับผู้ใช้การรายงานของคุณ
  • มีประสิทธิภาพเนื่องจากพวกเขาดึงข้อมูลชุดที่มีขนาดเล็กกว่าของค่าที่มีอยู่

ตรวจสอบให้แน่ใจว่ามีการปรับให้เหมาะสมกับแหล่งข้อมูลของคุณโดย:

  • การใช้ขั้นตอนที่จัดเก็บไว้ เมื่อใดก็ตามที่เป็นไปได้
  • การเพิ่มดัชนีที่เหมาะสมสำหรับการดึงข้อมูลที่มีประสิทธิภาพ
  • ค่าคอลัมน์ที่ปรากฏจริง—และแม้แต่แถว—เพื่อหลีกเลี่ยงการประเมินเวลาแบบสอบถามที่มีราคาแพง

ขั้นตอนถัดไป

สำหรับข้อมูลเพิ่มเติมที่เกี่ยวข้องกับบทความนี้ โปรดดูทรัพยากรต่อไปนี้: