ฝังรายงานด้วยฐานข้อมูล Azure Analysis Services (AAS)
นําไปใช้กับ: ผู้ใช้ข้อมูลที่เป็นเจ้าของข้อมูล
แอปเป็นเจ้าของข้อมูล
บทความนี้อธิบายวิธีการฝังรายงาน Power BI ที่ใช้ข้อมูลที่จัดเก็บไว้ใน Azure Analysis Services (AAS) ใน สถานการณ์การฝังตัวสําหรับลูกค้า ของคุณ บทความนี้มีจุดมุ่งหมายที่นักพัฒนาซอฟต์แวร์อิสระ (ISV) ที่ต้องการฝังรายงานด้วยข้อมูล AAS ไม่ว่าฐานข้อมูลจะใช้ การรักษาความปลอดภัยระดับแถว (RLS) หรือไม่ก็ตาม
ข้อกำหนดเบื้องต้น
คุณจะต้องมีรายงานที่มีการเชื่อมต่อสดไปยังฐานข้อมูล AAS ที่มีหรือไม่มี RLS
การรักษาความปลอดภัยแบบไดนามิก - RLS
ถ้าคุณต้องการให้รายงานของคุณใช้ RLS แบบไดนามิก ให้ใช้ customeData
ฟังก์ชัน เนื่องจากคุณไม่สามารถแทนที่ข้อมูลประจําตัวที่มีผลบังคับใช้ได้ เราขอแนะนําให้สร้างบทบาทใหม่ด้วยcustomData
คุณยังสามารถใช้บทบาทที่มี username
หรือ userPrincipalName
ฟังก์ชัน ถ้าคุณแทนที่ด้วยcustomData
ทําตามขั้นตอนเหล่านี้เพื่อสร้างบทบาทใหม่และเพิ่ม customData
ฟังก์ชันให้กับบทบาท
สร้างบทบาทในเซิร์ฟเวอร์ Analysis Services
ในการตั้งค่าทั่วไป ใส่ชื่อบทบาทและตั้งค่าสิทธิ์ของฐานข้อมูลเป็นอ่านอย่างเดียว
ใน การตั้งค่าการเป็นสมาชิก เพิ่มผู้ใช้ที่จะเรียกใช้ โทเค็นที่ฝัง - สร้างโทเค็น API ถ้าคุณกําลังใช้โครงร่างสําคัญของบริการที่ไม่ใช่ผู้ดูแลระบบ ให้เพิ่มสิ่งนั้นด้วย
ใน การตั้งค่าตัวกรอง แถว ให้ตั้งค่าคิวรี DAX ของคุณโดยใช้
CUSTOMDATA()
ฟังก์ชัน
บริการหลัก
ถ้าคุณกําลังใช้โครงร่างสําคัญของบริการเพื่อฝังรายงาน ตรวจสอบให้แน่ใจว่าโครงร่างสําคัญของบริการเป็นผู้ดูแลระบบเซิร์ฟเวอร์หรือสมาชิกบทบาทของ AAS ในการให้สิทธิ์ผู้ดูแลระบบ AAS กับโครงร่างสําคัญของบริการ โปรดดู เพิ่มบริการหลักไปยังบทบาทผู้ดูแลระบบเซิร์ฟเวอร์ หากต้องการเพิ่มบริการหลักเป็นสมาชิกบทบาท ให้ไปที่ การตั้งค่าการเป็นสมาชิก
ใช้ ID ออบเจ็กต์ของบริการหลักเป็นชื่อผู้ใช้ (ข้อมูลประจําตัวที่มีประสิทธิภาพ)
การโยกย้ายบริการวิเคราะห์
คุณสามารถ โยกย้ายจาก AAS ไปยัง Power BI Premium แม้ว่าคุณมีรายงาน AAS แบบฝังตัวได้ รายงานแบบฝังตัวของคุณจะไม่หยุดระหว่างการโยกย้าย ตราบใดที่โครงร่างสําคัญที่เรียกใช้ โทเค็นแบบฝัง - สร้างโทเค็น API เป็นสมาชิกหรือผู้ดูแลระบบของพื้นที่ทํางาน
หมายเหตุ
ถ้าโครงร่างสําคัญของบริการไม่ใช่ผู้ดูแลระบบ และคุณไม่ต้องการทําให้เป็นผู้ดูแลระบบของพื้นที่ทํางานเมื่อคุณโยกย้าย ให้ย้ายแบบจําลองนั้นไปยังพื้นที่ทํางานแยกต่างหากซึ่งคุณสามารถให้สิทธิ์ผู้ดูแลระบบได้
สร้างโทเค็นแบบฝังตัว
ใช้สร้างโทเค็น API เพื่อสร้างโทเค็นแบบฝังตัวที่แทนที่ข้อมูลประจําตัวที่มีผลบังคับใช้
ข้อมูลที่จําเป็นในการสร้างโทเค็นแบบฝังจะขึ้นอยู่กับวิธีที่คุณเชื่อมต่อกับ Power BI (บริการหลัก หรือ ผู้ใช้หลัก) และถ้าฐานข้อมูลมี RLS
หากต้องการสร้างโทเค็นแบบฝัง ให้ระบุข้อมูลต่อไปนี้:
- ชื่อผู้ใช้ (ไม่บังคับถ้าไม่มี RLS จําเป็นสําหรับ RLS) - ชื่อผู้ใช้ต้องเหมือนกับผู้เรียก API (ในกรณีนี้คือ UPN ของผู้ใช้หลัก) ถ้าฐานข้อมูลไม่ได้ใช้ RLS และไม่มีชื่อผู้ใช้ที่ระบุไว้ ข้อมูลประจําตัวของผู้ใช้หลักจะถูกใช้
- บทบาท (จําเป็นสําหรับ RLS) - รายงานจะแสดงข้อมูลก็ต่อเมื่อข้อมูลประจําตัวที่มีผลบังคับใช้เป็นสมาชิกของบทบาท
ตัวอย่าง:
กําหนดข้อมูลประจําตัวผู้ใช้และบทบาทสําหรับหนึ่งในสามสถานการณ์ต่อไปนี้:
- หากไม่ได้ใช้ RLS:
ไม่จําเป็นต้องกําหนดข้อมูลประจําตัวใด ๆ ที่มีผลบังคับใช้
หากใช้ RLS แบบคงที่:
var rlsidentity = new EffectiveIdentity( //If static RLS username: "username@contoso.com", roles: new List<string>{ "MyRole" }, datasets: new List<string>{ datasetId.ToString()} )
หากใช้ RLS แบบไดนามิก:
var rlsidentity = new EffectiveIdentity( // If dynamic RLS username: "username@contoso.com", roles: new List<string>{ "MyRoleWithCustomData" }, customData: "SalesPersonA" datasets: new List<string>{ datasetId.ToString()} )
หมายเหตุ
customData
ในโทเค็นแบบฝังตัวต้องไม่เกิน 1,024 อักขระ
ใช้ข้อมูลประจําตัวที่มีผลบังคับใช้เพื่อสร้างโทเค็นแบบฝังตัว:
public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
{
PowerBIClient pbiClient = this.GetPowerBIClient();
// Create a request for getting an embed token for the rls identity defined above
var tokenRequest = new GenerateTokenRequestV2(
reports: new List<GenerateTokenRequestV2Report>() { new GenerateTokenRequestV2Report(reportId) },
datasets: datasetIds.Select(datasetId => new GenerateTokenRequestV2Dataset(datasetId.ToString())).ToList(),
targetWorkspaces: targetWorkspaceId != Guid.Empty ? new List<GenerateTokenRequestV2TargetWorkspace>() { new GenerateTokenRequestV2TargetWorkspace(targetWorkspaceId) } : null,
identities: new List<EffectiveIdentity> { rlsIdentity } // Only in cases of RLS
);
// Generate an embed token
var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);
return embedToken;
}
ใช้โทเค็นแบบฝังตัวเพื่อฝังรายงานลงในแอปหรือเว็บไซต์ของคุณ รายงานของคุณจะกรองข้อมูลตาม RLS ที่ใช้ในรายงาน