แชร์ผ่าน


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

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

โน้ต

บทนําสู่พารามิเตอร์การเรียงและวิธีการกําหนดค่าไม่ได้ครอบคลุมในบทความนี้ ถ้าคุณไม่คุ้นเคยทั้งหมดกับพารามิเตอร์การเรียง เราขอแนะนําให้คุณอ่านก่อน เพิ่มพารามิเตอร์การเรียงไปยังรายงานในตัวสร้างรายงาน Power BI

สถานการณ์การออกแบบ

มีสถานการณ์การออกแบบสองสถานการณ์สําหรับการใช้พารามิเตอร์การเรียง ซึ่งสามารถใช้เพื่อ:

  • ตัวกรอง หน่วยข้อมูลขนาดใหญ่
  • รายการ ที่เกี่ยวข้อง รายการ

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

ตัวอย่างที่แสดงในบทความนี้จะขึ้นอยู่กับฐานข้อมูล Azure SQL การดําเนินการขายของเรกคอร์ดฐานข้อมูล และประกอบด้วยตารางต่าง ๆ ที่จัดเก็บตัวแทนจําหน่าย ผลิตภัณฑ์ และใบสั่งขาย

ตารางที่มีชื่อ Reseller จัดเก็บหนึ่งระเบียนสําหรับแต่ละผู้จําหน่าย และประกอบด้วยระเบียนจํานวนมากหลายพันรายการ ตาราง Reseller มีคอลัมน์เหล่านี้:

  • โค้ดตัวแทนจําหน่าย (จํานวนเต็ม)
  • ResellerName
  • Country-Region
  • State-Province
  • เมือง
  • รหัสไปรษณีย์

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

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

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

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

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

  • ตัวกรอง ตามคอลัมน์ที่เกี่ยวข้อง
  • กรองตาม คอลัมน์การจัดกลุ่ม
  • กรองตาม รูปแบบการค้นหา

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

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

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

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

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

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

    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. สําหรับแต่ละชุดข้อมูลยกเว้นชุดแรก แมปพารามิเตอร์คิวรีไปยังพารามิเตอร์รายงานที่สอดคล้องกัน

โน้ต

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

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

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

กรองตามคอลัมน์การจัดกลุ่ม

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

สกรีนช็อตของพารามิเตอร์รายงานแบบแบ่งหน้าของ 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. แมปพารามิเตอร์คิวรีของ ตัวแทนจําหน่าย ชุดข้อมูลไปยังพารามิเตอร์รายงานที่สอดคล้องกัน

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

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. แมปพารามิเตอร์คิวรีของ ตัวแทนจําหน่าย ชุดข้อมูลไปยังพารามิเตอร์รายงานที่สอดคล้องกัน

ปลาย

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

สําหรับข้อมูลเพิ่มเติม โปรดดู LIKE (Transact-SQL)

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

WHERE
  [ResellerName] LIKE @Search

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

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

รายการที่เกี่ยวข้องปัจจุบัน

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

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

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

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

  1. สร้างOrderDateStart OrderDateEndและผู้จําหน่าย พารามิเตอร์รายงานตามลําดับที่ถูกต้อง

  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]
    

คำ แนะ นำ

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

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

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

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

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