แชร์ผ่าน


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

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

หมายเหตุ

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

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

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

  • กรอง กลุ่มใหญ่ ของรายการ
  • รายการที่เกี่ยวข้องปัจจุบัน

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

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

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

  • โค้ดตัวแทนจําหน่าย (จํานวนเต็ม)
  • ResellerName
  • ประเทศ-ภูมิภาค
  • รัฐ-จังหวัด
  • City
  • PostalCode

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

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

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

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

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

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

Screenshot of Power BI paginated report parameters showing filter by related columns.

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

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

หมายเหตุ

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

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

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

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

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

Screenshot of Power BI paginated report parameters showing filter by a grouping column.

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

  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

กรองตามรูปแบบการค้นหา

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

Screenshot of Power BI paginated report parameters showing filter by search pattern.

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

  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, '%', '*')

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

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

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

Screenshot of Power BI paginated report parameters showing three report parameters: Start Order Date, End Order Date, and Reseller.

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

  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]
    

การแนะนำ

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

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

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

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

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