แชร์ผ่าน


ฝังรายงานด้วยฐานข้อมูล Azure Analysis Services (AAS)

นําไปใช้กับ: ผู้ใช้ข้อมูลที่เป็นเจ้าของข้อมูล แอปเป็นเจ้าของข้อมูล

บทความนี้อธิบายวิธีการฝังรายงาน Power BI ที่ใช้ข้อมูลที่จัดเก็บไว้ใน Azure Analysis Services (AAS) ใน สถานการณ์การฝังตัวสําหรับลูกค้า ของคุณ บทความนี้มีจุดมุ่งหมายที่นักพัฒนาซอฟต์แวร์อิสระ (ISV) ที่ต้องการฝังรายงานด้วยข้อมูล AAS ไม่ว่าฐานข้อมูลจะใช้ การรักษาความปลอดภัยระดับแถว (RLS) หรือไม่ก็ตาม

ข้อกำหนดเบื้องต้น

คุณจะต้องมีรายงานที่มีการเชื่อมต่อสดไปยังฐานข้อมูล AAS ที่มีหรือไม่มี RLS

การรักษาความปลอดภัยแบบไดนามิก - RLS

ถ้าคุณต้องการให้รายงานของคุณใช้ RLS แบบไดนามิก ให้ใช้ customeData ฟังก์ชัน เนื่องจากคุณไม่สามารถแทนที่ข้อมูลประจําตัวที่มีผลบังคับใช้ได้ เราขอแนะนําให้สร้างบทบาทใหม่ด้วยcustomData คุณยังสามารถใช้บทบาทที่มี username หรือ userPrincipalName ฟังก์ชัน ถ้าคุณแทนที่ด้วยcustomData

ทําตามขั้นตอนเหล่านี้เพื่อสร้างบทบาทใหม่และเพิ่ม customData ฟังก์ชันให้กับบทบาท

  1. สร้างบทบาทในเซิร์ฟเวอร์ Analysis Services

    สกรีนช็อตของการสร้างบทบาทใหม่ในเซิร์ฟเวอร์ Analysis Services

  2. ในการตั้งค่าทั่วไป ใส่ชื่อบทบาทและตั้งค่าสิทธิ์ของฐานข้อมูลเป็นอ่านอย่างเดียว

    สกรีนช็อตของการให้บทบาทใหม่มีชื่อใหม่และการตั้งค่าให้เป็นแบบอ่านอย่างเดียวในการตั้งค่าทั่วไปในเซิร์ฟเวอร์ Analysis Services

  1. ใน การตั้งค่าการเป็นสมาชิก เพิ่มผู้ใช้ที่จะเรียกใช้ โทเค็นที่ฝัง - สร้างโทเค็น API ถ้าคุณกําลังใช้โครงร่างสําคัญของบริการที่ไม่ใช่ผู้ดูแลระบบ ให้เพิ่มสิ่งนั้นด้วย

    สกรีนช็อตของการเพิ่มผู้ใช้ไปยังบทบาทใหม่ในเซิร์ฟเวอร์ Analysis Services

  2. ใน การตั้งค่าตัวกรอง แถว ให้ตั้งค่าคิวรี DAX ของคุณโดยใช้ CUSTOMDATA() ฟังก์ชัน

    สกรีนช็อตที่แสดงวิธีการเพิ่มฟังก์ชัน customData ไปยังคิวรี DAX ในบทบาทใหม่ในเซิร์ฟเวอร์ Analysis Services

บริการหลัก

ถ้าคุณกําลังใช้โครงร่างสําคัญของบริการเพื่อฝังรายงาน ตรวจสอบให้แน่ใจว่าโครงร่างสําคัญของบริการเป็นผู้ดูแลระบบเซิร์ฟเวอร์หรือสมาชิกบทบาทของ 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 ที่ใช้ในรายงาน