แชร์ผ่าน


กรองรายงานโดยใช้พารามิเตอร์สตริงของคิวรีใน URL

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

บทความนี้ใช้รายงานตัวอย่างการวิเคราะห์ร้านค้าปลีก ถ้าคุณต้องการทําตาม คุณสามารถ ดาวน์โหลดรายงานตัวอย่าง

สกรีนช็อตของรายงาน Power BI ในบริการ

ใช้สําหรับพารามิเตอร์สตริงของคิวรี

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

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

ไวยากรณ์พารามิเตอร์สตริงของแบบสอบถามสําหรับการกรอง

ด้วยพารามิเตอร์ คุณสามารถกรองรายงานสําหรับค่าอย่างน้อยหนึ่งค่าหรือมากกว่า แม้ว่าค่าเหล่านั้นประกอบด้วยช่องว่างหรืออักขระพิเศษ ไวยากรณ์พื้นฐานจะค่อนข้างตรงไปตรงมา เริ่มต้นด้วย URL ของรายงาน จากนั้นเพิ่มไวยากรณ์ตัวกรองของคุณในสตริงคิวรี สตริงแบบสอบถามใน URL เริ่มต้นด้วยเครื่องหมายคําถาม (?)ตัวอย่างเช่น:

URL?filter=/ eq 'ค่า'

สกรีนช็อตของ URL ที่มีตัวกรอง

  • ชื่อตาราง และ เขตข้อมูล ต้องตรงตามตัวพิมพ์ใหญ่-เล็ก แต่ชื่อเขตข้อมูลต้องตรงตามตัวพิมพ์ใหญ่-เล็ก value ไม่ใช่
  • ยังคงสามารถกรองเขตข้อมูลที่ถูกซ่อนจากมุมมองรายงานได้

ถ้าพารามิเตอร์ตัวกรองไม่ใช่พารามิเตอร์แรกในสตริงแบบสอบถาม พารามิเตอร์ดังกล่าวจะถูกรวมกับพารามิเตอร์ก่อนหน้าที่มีเครื่องหมายและ (&) ตัวอย่างเช่น:

URL?reportId=xxxxxxx-xxxx-xxxx-xxxx-xxxxxx&pageName=ReportSection&filter=ตาราง/เขตข้อมูล eq 'ค่า'

ชนิดฟิลด์

ชนิดเขตข้อมูลสามารถเป็นตัวเลข วันที่เวลา หรือสตริงและชนิดที่ใช้ต้องตรงกับชนิดที่กําหนดในแบบจําลองความหมาย ตัวอย่างเช่น การระบุคอลัมน์ในตารางเป็นชนิด "สตริง" จะไม่ทํางานถ้าคุณกําลังค้นหาค่าที่เป็นวันที่เวลาหรือตัวเลขในคอลัมน์แบบจําลองความหมายที่ตั้งค่าเป็นวันที่ เช่น ตาราง/StringColumn eq 1

  • สตริงต้องถูกล้อมรอบด้วยเครื่องหมายอัญประกาศเดี่ยวเหมือนใน 'ชื่อผู้จัดการ'
  • ตัวเลข ไม่จําเป็นต้องมีการจัดรูปแบบพิเศษ ดู ชนิดข้อมูล ตัวเลข ในบทความนี้สําหรับรายละเอียด
  • วันที่และเวลา ดู ชนิดข้อมูล วันที่ในบทความนี้

ถ้ายังคงสับสน ให้อ่านต่อไป และเราจะแบ่งย่อย

ตัวกรองบนเขตข้อมูล

สมมติว่า URL ในรายงานของเราเป็นดังต่อไปนี้

สกรีนช็อตของ URL เริ่มต้น

และเราเห็นในการแสดงภาพแผนที่ก่อนหน้านี้ของเราที่เรามีร้านค้าใน North Carolina NC คือค่าที่แสดงแทน North Carolina ในเขตข้อมูล Territory ของตาราง Store ดังนั้นในการกรองรายงานเพื่อแสดงข้อมูลเฉพาะสําหรับร้านค้าใน "NC" เราจะผนวกสตริงนี้เข้ากับ URL:

?filter=Store/Territory eq 'NC'

สกรีนช็อตของ URL ที่มีตัวกรองสําหรับ North Carolina

ตอนนี้รายงานของเราได้รับการกรองสําหรับ North Carolina แล้ว การแสดงภาพทั้งหมดในรายงานแสดงข้อมูลสําหรับ North Carolina เท่านั้น

สกรีนช็อตของรายงานที่กรองสําหรับ North Carolina

กรองมากกว่าหนึ่งค่าในเขตข้อมูล

เมื่อต้องการกรองมากกว่าหนึ่งค่าในเขตข้อมูลเดียว คุณใช้ตัวดําเนินการ ใน แทนตัวดําเนินการ และ ไวยากรณ์คือ:

URL?filter=เขตข้อมูล/ใน ('value1', 'value2')

ใช้ตัวอย่างเดียวกัน เพื่อกรองรายงานเพื่อแสดงข้อมูลสําหรับร้านค้าใน "NC" (North Carolina) หรือ "TN" (Tennessee) เท่านั้น โดยให้เพิ่มข้อมูลต่อไปนี้ลงใน URL:

?filter=Store/Territory in ('NC', 'TN')

ดูตาราง ตัวดําเนินการ ในภายหลังในบทความสําหรับรายการของตัวดําเนินการอื่นๆ ที่มีประโยชน์

ตัวกรองบนหลายเขตข้อมูล

คุณยังสามารถกรองบนหลายเขตข้อมูลโดยการเพิ่มพารามิเตอร์เพิ่มเติมไปยัง URL ของคุณ ลองย้อนกลับไปที่พารามิเตอร์ตัวกรองต้นฉบับของเรา

?filter=Store/Territory eq 'NC'

เมื่อต้องการกรองเขตข้อมูลเพิ่มเติม ให้เพิ่ม 'and' และเขตข้อมูลอีกเขตหนึ่งในรูปแบบเดียวกับตัวอย่างก่อนหน้านี้ นี่เป็นตัวอย่าง:

?filter=Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'

ตัวดำเนินการ

Power BI สนับสนุนตัวดําเนินการมากมายนอกเหนือจาก 'and' ตารางต่อไปนี้แสดงรายการตัวดําเนินการเหล่านั้นพร้อมกับชนิดเนื้อหาที่สนับสนุน

ตัวดำเนินการ ข้อกำหนด สตริง หมายเลข วันที่ ตัว อย่าง เช่น
and และ ใช่ ใช่ ใช่ ผลิตภัณฑ์/ราคา le 200 และราคา gt 3.5
eq equals ใช่ ใช่ ใช่ ที่อยู่/เมือง eq 'Redmond'
ยเน ไม่เท่ากับ ใช่ ใช่ ใช่ ที่อยู่/เมือง ne 'ลอนดอน'
ge มากกว่าหรือเท่ากับ ไม่ใช่ ใช่ ใช่ ผลิตภัณฑ์/ราคา ge 10
gt มากกว่า ไม่ใช่ ใช่ ใช่ ผลิตภัณฑ์/ราคา gt 20
เลอ น้อยกว่าหรือเท่ากับ ไม่ใช่ ใช่ ใช่ ผลิตภัณฑ์/ราคา le 100
lt น้อยกว่า ไม่ใช่ ใช่ ใช่ ผลิตภัณฑ์/ราคา lt 20
ใน* รวมถึง ใช่ ใช่ ใช่ นักเรียน/อายุ in (27, 29)

* เมื่อคุณใช้ ใน ค่าทางด้านขวาของ in สามารถเป็นรายการที่คั่นด้วยจุลภาคที่ถูกล้อมรอบด้วยวงเล็บ หรือเป็นนิพจน์เดี่ยวที่ส่งค่ากลับเป็นคอลเลกชัน ดูบทความตัวดําเนินการ IN สําหรับตัวอย่าง

ชนิดข้อมูลตัวเลข

ตัวกรอง Power BI URL สามารถรวมตัวเลขในรูปแบบต่อไปนี้

ชนิดตัวเลข ตัว อย่าง เช่น
จำนวนเต็ม 5
ยาว 5 L หรือ 5 l
คู่ 5.5 หรือ 55e-1 หรือ 0.55e+1 หรือ 5D หรือ 5d หรือ 0.5e1D หรือ 0.5e1d หรือ 5.5D หรือ 5.5d หรือ 55e-1D หรือ 55e-1d
เลขทศนิยม 5 M หรือ 5 m หรือ 5.5 M หรือ 5.5 m
ลอย 5 F หรือ 5 f หรือ 0.5e1 F หรือ 0.5e-1 d

ชนิดข้อมูลวันที่

Power BI สนับสนุน OData V3 และ V4 สําหรับชนิดข้อมูลวันที่และ DateTimeOffset สําหรับ OData V3 คุณต้องใส่วันที่ไว้ในเครื่องหมายอัญประกาศเดี่ยวและนําหน้าด้วยคําว่า datetime คุณไม่จําเป็นต้องมีเครื่องหมายอัญประกาศเดี่ยวและคําว่า datetime ใน OData V4

แสดงวันที่โดยใช้รูปแบบ EDM (2019-02-12T00:00:00): เมื่อคุณระบุวันที่ว่า 'YYYY-MM-DD' Power BI จะแปลเป็น 'YYYY-MM-DDT00:00:00' ตรวจสอบให้แน่ใจว่าเดือนและวันเป็นสองหลัก MM และ DD

ทําไมความแตกต่างนี้จึงสําคัญ สมมติว่าคุณสร้างพารามิเตอร์สตริงของคิวรีตาราง/วันที่ gt '2018-08-03' ผลลัพธ์จะรวมวันที่ 3 สิงหาคม 2018 หรือเริ่มต้นด้วยวันที่ 4 สิงหาคม 2018 หรือไม่? Power BI แปลคิวรีของคุณเป็น ตาราง/วันที่ gt '2018-08-03T00:00:00' ดังนั้น ผลลัพธ์ของคุณรวมวันที่ใดๆ ที่มีส่วนของเวลาที่ไม่เป็นศูนย์เนื่องจากวันที่เหล่านั้นจะมากกว่า '2018-08-03T00:00:00'

มีความแตกต่างกันอื่น ๆ ระหว่าง V3 และ V4 OData V3 ไม่รองรับวันที่เวลาเท่านั้น ดังนั้นถ้าคุณใช้รูปแบบ V3 คุณต้องรับรองคุณสมบัติกับวันที่เต็มเวลา ตัวอักษรวันที่เช่น "datetime'2019-05-20'" ไม่ได้รับการรองรับในสัญพจน์ V3 แต่คุณสามารถเขียนเป็น "2019-05-20" ในสมมตญาณ V4 ได้ ต่อไปนี้คือคิวรีตัวกรองเทียบเท่าสองแบบใน V3 และ V4:

  • รูปแบบ OData V4: ตัวกรอง = ตาราง/วันที่ gt 2019-05-20
  • รูปแบบ OData V3: ตัวกรอง = ตาราง/วันที่ gt วันที่เวลา'2019-05-20T00:00:00'

อักขระพิเศษในตัวกรอง URL

อักขระพิเศษในชื่อตารางและคอลัมน์

อักขระพิเศษ ช่องว่าง และตัวเลขนําหน้าในชื่อตารางและคอลัมน์จําเป็นต้องมีการจัดรูปแบบเพิ่มเติม เมื่อคิวรีของคุณประกอบด้วยช่องว่าง เส้นประ ตัวเลขนําหน้า หรืออักขระอื่น ๆ ที่ไม่ใช่ ASCII ให้นําหน้าอักขระพิเศษเหล่านั้นด้วย escape code ที่ขึ้นต้นด้วยขีดล่างและ X (_x) แล้วใส่ Unicode 4 หลักตามด้วยขีดล่าง ถ้า Unicode น้อยกว่าสี่อักขระ คุณจําเป็นต้องเติมศูนย์ นี่คือตัวอย่างบางส่วน

ตัวระบุ Unicode การเข้ารหัสสําหรับ Power BI
ชื่อตาราง ช่องว่างคือ 00x20 Table_x0020_Name
หมายเลขคอลัมน์@ @ คือ 00x40 Column_x0040_Number
[Column] [ คือ 0x005B ] 0x005D _x005B_Column_x005D_
คอลัมน์ +บวก + ถูก 0x2B Column_x002B_Plus
2TableName 2 คือ x0032 _x0032_TableName

Table_x0020_Name/Column_x002B_Plus eq 3 ภาพหน้าจอของวิชวลตารางแสดงอักขระพิเศษสําหรับ Unicode

Table_x0020_Special/_x005B_Column_x0020_Brackets_x005D_ eq '[C]' สกรีนช็อตของวิชวลตารางแสดงอักขระพิเศษสําหรับการเข้ารหัสสําหรับ Power BI

อักขระพิเศษในค่าต่างๆ

ตัวกรอง URL สนับสนุนอักขระพิเศษส่วนใหญ่ในค่าเขตข้อมูล แต่บางอย่างยังจําเป็นต้องมี รหัสการหลีกเลี่ยงอีกด้วย ตัวอย่างเช่น เมื่อต้องการค้นหาอักขระเครื่องหมายคําพูดเดี่ยว ให้ใช้เครื่องหมายคําพูดสองอัน ('')

  • ?filter=Table/Name eq 'O''Brien' กลาย เป็น:

    ชื่อ O'Brien

  • ?filter=Table/Name eq 'Lee''s Summit' กลาย เป็น:

    Lee's Summit

  • ตัว in ดําเนินการสนับสนุนการหนีนี้เช่นกัน: ?filter=Table/Name in ('Lee''s Summit', 'O''Brien') จะกลายเป็น:

    Lee's Summit หรือ O'Brien

นี่คือรายการของอักขระพิเศษบางอย่างที่จําเป็นต้องมีรหัสการหลีกในค่าเขตข้อมูล

อักขระ รหัสการหลีกเลี่ยง
(ช่องว่าง) 20%
' ''
% 25%
+ %2B
/ %2F
? %3F
# %23
& 26%

อักขระหลีก URL มาตรฐาน

เมื่อคุณใช้ URL ที่มีช่องว่างและอักขระพิเศษอื่น ๆ ในนั้น เบราว์เซอร์อาจแทนที่ช่องว่างด้วยอักขระหลีกมาตรฐานโดยอัตโนมัติ สมมติว่าคุณสร้างสตริงแบบสอบถาม URL นี้:

https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives/Executive eq 'Andrew Ma'

ซึ่งจะเปิดตัวอย่างความสามารถในการทํากําไรลูกค้าซึ่งกรองไปยัง Andrew Ma แต่ถ้าคุณดูที่ URL ตอนนี้อาจมีลักษณะดังนี้:

https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives%2FExecutive%20eq%20%27Andrew%20Ma%27

เบราว์เซอร์ได้แทนที่ช่องว่างระหว่าง Andrew และ Ma ด้วย %20ในทํานองเดียวกันช่องว่างอื่น ๆ โดยแทนที่เครื่องหมายทับไปข้างหน้าระหว่างชื่อExecutivesตารางและชื่อExecutiveเขตข้อมูลด้วย %2Fและแทนที่เครื่องหมายอัญ'ประกาศเดี่ยวด้วย%27

URL เวอร์ชันนี้อาจมีประโยชน์ ตัวอย่างเช่น คุณสามารถวางในแชทใน Microsoft Teams และจะส่งกลับผลลัพธ์ที่ถูกกรองที่ต้องการ

ใช้ DAX เพื่อกรองค่าหลายค่า

อีกวิธีหนึ่งเพื่อกรองหลายเขตข้อมูลคือ การสร้างคอลัมน์จากการคํานวณที่รวมเขตข้อมูลสองเขตเป็นค่าเดียว จากนั้นคุณสามารถกรองค่านั้นได้

ตัวอย่างเช่น เรามีสองเขตข้อมูล: Territory และ Chain ใน Power BI Desktop สร้าง คอลัมน์ จากการคํานวณ (เขตข้อมูล) ที่เรียกว่า TerritoryChain โปรดจําไว้ว่า ชื่อเขตข้อมูล ต้องไม่มีช่องว่าง นี่คือสูตร DAX สําหรับคอลัมน์นั้น

TerritoryChain = [Territory] & " - " && [Chain]

เผยแพร่รายงานไปยังบริการของ Power BI จากนั้นใช้สตริงแบบสอบถาม URL เพื่อกรองและแสดงข้อมูลสําหรับร้านค้า Lindseys ใน NC เท่านั้น

https://app.powerbi.com/groups/me/reports/8d6e300b-696f-498e-b611-41ae03366851/ReportSection3?filter=Store/TerritoryChain eq 'NC – Lindseys'

ปักหมุดไทล์จากรายงานที่กรองแล้ว

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

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

ข้อควรพิจารณาและการแก้ไขปัญหา

มีบางสิ่งที่ควรระวังเมื่อใช้พารามิเตอร์สตริงของคิวรี

  • เมื่อคุณใช้ตัว ดําเนินการ in ค่าทางด้านขวาของ in ต้องเป็นรายการที่คั่นด้วยจุลภาคที่อยู่ในวงเล็บ

  • นอกจากนี้ เซิร์ฟเวอร์รายงาน Power BI ยังรองรับความสามารถในการระบุตัวกรองมากกว่าหนึ่งรายการโดยใช้พารามิเตอร์ URL "ตัวกรอง" นี่คือตัวอย่างของ URL ที่อาจมีลักษณะเหมือนในเซิร์ฟเวอร์รายงาน Power BI:https://reportserver/reports/powerbi/Store Sales?rs:Embed=true&filter= Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'

  • ตัวกรอง URL รายงานมีขีดจํากัด 10 นิพจน์ (10 ตัวกรองที่เชื่อมต่อโดย AND)

  • ชนิดข้อมูล long คือ (2^53-1) เนื่องจากข้อจํากัดของ JavaScript

  • สตริงแบบสอบถาม URL จะถูกจํากัดไว้ที่ 2000 อักขระ ขีดจํากัดนี้รวมถึงรหัสการหลีกสําหรับอักขระพิเศษ (เช่น ช่องว่าง %, +)

  • คุณไม่สามารถกรองชื่อตารางหรือคอลัมน์ที่ขึ้นต้นด้วยตัวอักษร พิมพ์ใหญ่ INF ซึ่งรวมถึงชื่อตารางที่ขึ้นต้นด้วย "INFORMATION" INF ตัวพิมพ์ใหญ่พิมพ์เล็กเป็นค่าพิเศษใน OData ถ้าคุณต้องการเริ่มต้นชื่อตารางหรือคอลัมน์ด้วย "INF" ให้ทําเป็นตัวพิมพ์เล็ก "inf" แทน

  • ชื่อตารางและเขตข้อมูลสามารถมีอักขระภาษาจีนที่แสดงในแบบฟอร์ม Unicode ได้ ตัวอย่างเช่น คุณต้องการใช้ตัวกรองที่表/人 eq '张力' (ซึ่งหมายความว่า ตาราง/บุคคล eq '张力') ตัวกรองจะถูกแปลงเป็น _x8868_/_x4eba_ eq '张力'

    สกรีนช็อตของอักขระภาษาจีนที่แปลงเป็นรูปแบบ Unicode ในสตริงการค้นหา

การฝังสถานการณ์

รองรับตัวกรอง URL ในสถานการณ์การฝังบางอย่างและไม่ได้อยู่ในสถานการณ์อื่น

มีคำถามเพิ่มเติมหรือไม่? ลองถามชุมชน Power BI