แชร์ผ่าน


เข้าถึงบันทึกกิจกรรม Power BI

บทความนี้มีเป้าหมายเป็นผู้ดูแลระบบ Fabric ที่ต้องการเข้าถึงและวิเคราะห์ข้อมูลที่มาจากบันทึกกิจกรรม Power BI ซึ่งมุ่งเน้นไปที่การค้นคืนทางโปรแกรมของกิจกรรม Power BI โดยใช้ cmdlet รับ-PowerBIActivityEvent จากโมดูลการจัดการ Power BI ประวัติความเป็นมาสามารถใช้งานได้นานถึงสี่สัปดาห์ cmdlet นี้ใช้ การดําเนินการรับกิจกรรมของ Power BI REST API ซึ่งเป็น API ของผู้ดูแลระบบ cmdlet ของ PowerShell เพิ่มเลเยอร์ของนามธรรมที่ด้านบนของ API พื้นฐาน ดังนั้น cmdlet ของ PowerShell ทําให้ง่ายต่อการเข้าถึงบันทึกกิจกรรม Power BI

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

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

เคล็ดลับ

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

ตัวอย่างที่พร้อมใช้งาน

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

คำเตือน

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

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

บทความนี้ประกอบด้วยตัวอย่างต่อไปนี้

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

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

ตัวอย่างส่วนใหญ่ดึงข้อมูล JSON ดิบ การทํางานกับข้อมูล JSON ดิบมีข้อดีหลายอย่าง

  • ข้อมูลทั้งหมดที่พร้อมใช้งานสําหรับแต่ละเหตุการณ์กิจกรรมจะถูกส่งกลับ ซึ่งเป็นประโยชน์สําหรับคุณที่จะเรียนรู้ว่าข้อมูลใดบ้างที่พร้อมใช้งาน โปรดทราบว่าเนื้อหาของการตอบสนอง API จะแตกต่างกันโดยขึ้นอยู่กับเหตุการณ์กิจกรรมจริง ตัวอย่างเช่น ข้อมูลที่พร้อมใช้งานสําหรับเหตุการณ์ CreateApp จะแตกต่างจากเหตุการณ์ ViewReport
  • เนื่องจากข้อมูลที่พร้อมใช้งานในการเปลี่ยนแปลงบันทึกกิจกรรมเมื่อ Power BI พัฒนาขึ้นเมื่อเวลาผ่านไป คุณจึงคาดว่าการตอบสนอง API จะเปลี่ยนแปลงเช่นกัน ด้วยวิธีนี้ ข้อมูลใหม่ที่นํามาใช้จะไม่พลาดไป กระบวนการของคุณมีความยืดหยุ่นมากขึ้นในการเปลี่ยนแปลงและมีโอกาสที่จะล้มเหลวน้อยลง
  • รายละเอียดของการตอบสนอง API อาจแตกต่างกันสําหรับระบบคลาวด์เชิงพาณิชย์ของ Power BI และ ระบบคลาวด์แห่งชาติ/ภูมิภาค
  • หากคุณมีสมาชิกในทีมอื่น (เช่น วิศวกรข้อมูล) ที่เกี่ยวข้องกับกระบวนการนี้ ทําให้กระบวนการเริ่มต้นในการแยกข้อมูลง่ายขึ้นทําให้หลายทีมทํางานร่วมกันได้ง่ายขึ้น

เคล็ดลับ

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

ข้อกำหนด

หากต้องการใช้สคริปต์ตัวอย่าง คุณต้องทําตามข้อกําหนดต่อไปนี้

  • เครื่องมือไคลเอ็นต์ PowerShell: ใช้เครื่องมือที่คุณต้องการสําหรับการเรียกใช้คําสั่ง PowerShell ตัวอย่างทั้งหมดได้รับการทดสอบโดยใช้ ส่วนขยาย PowerShell สําหรับ Visual Studio Code ด้วย PowerShell 7 สําหรับข้อมูลเกี่ยวกับเครื่องมือไคลเอ็นต์และเวอร์ชัน PowerShell ให้ดู การตรวจสอบระดับผู้เช่า
  • โมดูลการจัดการ Power BI: ติดตั้งมอดูล PowerShell Power BI ทั้งหมด หากคุณติดตั้งไว้ก่อนหน้านี้ เราขอแนะนําให้คุณอัปเดตโมดูลเพื่อให้แน่ใจว่าคุณกําลังใช้เวอร์ชันที่เผยแพร่ล่าสุด
  • บทบาทผู้ดูแลระบบ Fabric: สคริปต์ตัวอย่างถูกออกแบบมาเพื่อใช้โฟลว์การรับรองความถูกต้องแบบโต้ตอบ ดังนั้นผู้ใช้ที่เรียกใช้สคริปต์ตัวอย่างของ PowerShell ต้องลงชื่อเข้าใช้เพื่อใช้ Power BI REST API ในการดึงข้อมูลบันทึกกิจกรรม ผู้ใช้ที่รับรองความถูกต้องต้องเป็นสมาชิกของบทบาท ผู้ดูแลระบบ Fabric (เนื่องจากการเรียกใช้กิจกรรมเสร็จสิ้นแล้วด้วย admin API) การรับรองความถูกต้องของบริการหลักอยู่นอกขอบเขตสําหรับตัวอย่างการเรียนรู้เหล่านี้

ส่วนที่เหลือของบทความนี้ประกอบด้วยสคริปต์ตัวอย่างที่แสดงวิธีต่าง ๆ ในการดึงข้อมูลบันทึกกิจกรรม

ตัวอย่างที่ 1: รับรองความถูกต้องด้วยบริการของ Power BI

การดําเนินการ Power BI REST API ทั้งหมดจําเป็นต้องให้คุณลงชื่อเข้าใช้ การรับรองความถูกต้อง (ผู้ที่กําลังทําการร้องขอ) และการอนุญาต (สิ่งที่ผู้ใช้มีสิทธิ์จะทํา) จะถูกจัดการโดยแพลตฟอร์มข้อมูลประจำตัวของ Microsoft ตัวอย่างต่อไปนี้ใช้ Connect-PowerBIServiceAccount cmdlet จาก อดูลการจัดการ Power BI cmdlet นี้สนับสนุนวิธีการลงชื่อเข้าใช้อย่างง่าย

คําขอตัวอย่าง 1

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

Connect-PowerBIServiceAccount

สำคัญ

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

ตรวจสอบให้แน่ใจว่าได้ลงชื่อเข้าใช้ก่อนที่จะเรียกใช้สคริปต์ใด ๆ ต่อไปนี้

ตัวอย่างที่ 2: ดูกิจกรรมทั้งหมดสําหรับผู้ใช้หนึ่งวัน

ในบางครั้งคุณจําเป็นต้องตรวจสอบกิจกรรมทั้งหมดที่ผู้ใช้ที่ระบุทําในวันที่ระบุ

เคล็ดลับ

เมื่อแยกข้อมูลจากบันทึกกิจกรรมโดยใช้ cmdlet ของ PowerShell คําขอแต่ละรายการสามารถดึงข้อมูลได้หนึ่งวัน (สูงสุด 24 ชั่วโมง) ดังนั้นเป้าหมายของตัวอย่างนี้คือการเริ่มต้นเพียงแค่ตรวจสอบผู้ใช้หนึ่งรายสําหรับหนึ่งวัน มีตัวอย่างอื่นๆ ในภายหลังในบทความนี้ที่แสดงวิธีใช้การวนรอบเพื่อส่งออกข้อมูลเป็นเวลาหลายวัน

คําขอตัวอย่าง 2

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

  • $UserEmailAddr: ที่อยู่อีเมลสําหรับผู้ใช้ที่คุณสนใจ
  • $ActivityDate: วันที่คุณสนใจ รูปแบบคือ YYYY-MM-DD (รูปแบบ ISO 8601) คุณไม่สามารถร้องขอวันที่ก่อนหน้า 28 วันก่อนวันที่ปัจจุบันได้
#Input values before running the script:
$UserEmailAddr = 'jordan@contoso.com'
$ActivityDate = '2023-03-15'
#----------------------------------------------------------------------
#View activity events:
Get-PowerBIActivityEvent `
    -StartDateTime ($ActivityDate + 'T00:00:00.000') `
    -EndDateTime ($ActivityDate + 'T23:59:59.999') `
    -User $UserEmailAddr

หมายเหตุ

คุณอาจสังเกตเห็นอักขระแบ็กทิก (') ที่ส่วนท้ายของบรรทัดบางบรรทัดในสคริปต์ PowerShell ใน PowerShell วิธีหนึ่งที่คุณสามารถใช้อักขระแบ็กทิกคือเป็นอักขระความต่อเนื่องของบรรทัด เราได้ใช้ฟังก์ชันนี้เพื่อปรับปรุงความสามารถในการอ่านสคริปต์ในบทความนี้

เคล็ดลับ

ในสคริปต์ ตัวแปร PowerShell แต่ละรายการสัมพันธ์กับค่าพารามิเตอร์ที่จําเป็นหรือเป็นทางเลือกใน cmdlet Get-PowerBIActivityEvent ตัวอย่างเช่น ค่าที่คุณกําหนดให้กับ $UserEmailAddr ตัวแปรจะถูกส่งผ่านไปยัง -User พารามิเตอร์ การประกาศตัวแปร PowerShell ด้วยวิธีนี้เป็นวิธีที่น้ําหนักเบาเพื่อหลีกเลี่ยงค่าการเข้ารหัสแบบตายตัวที่อาจเปลี่ยนแปลงในสคริปต์ของคุณ นี่เป็นพฤติกรรมที่ดีในการปรับใช้และจะมีประโยชน์เมื่อสคริปต์ของคุณซับซ้อนมากขึ้น พารามิเตอร์ PowerShell มีความแข็งแกร่งมากกว่าตัวแปร แต่อยู่นอกขอบเขตสําหรับบทความนี้

การตอบสนองตัวอย่าง 2

นี่คือตัวอย่างการตอบสนอง JSON ซึ่งรวมถึงสองกิจกรรมที่ผู้ใช้ดําเนินการ:

  • กิจกรรมแรกแสดงให้เห็นว่าผู้ใช้ดูรายงาน
  • กิจกรรมที่สองแสดงให้เห็นว่าผู้ดูแลระบบส่งออกข้อมูลจากบันทึกกิจกรรม Power BI แล้ว
[
  {
    "Id": "10af656b-b5a2-444c-bf67-509699896daf",
    "RecordType": 20,
    "CreationTime": "2023-03-15T15:18:30Z",
    "Operation": "ViewReport",
    "OrganizationId": "927c6607-8060-4f4a-a5f8-34964ac78d70",
    "UserType": 0,
    "UserKey": "100FFF92C7717B",
    "Workload": "PowerBI",
    "UserId": "jordan@contoso.com",
    "ClientIP": "192.168.1.1",
    "Activity": "ViewReport",
    "ItemName": "Gross Margin Analysis",
    "WorkSpaceName": "Sales Analytics",
    "DatasetName": "Sales Data",
    "ReportName": "Gross Margin Analysis",
    "WorkspaceId": "e380d1d0-1fa6-460b-9a90-1a5c6b02414c",
    "ObjectId": "Gross Margin Analysis",
    "DatasetId": "cfafbeb1-8037-4d0c-896e-a46fb27ff229",
    "ReportId": "94e57e92-Cee2-486d-8cc8-218c97200579",
    "ArtifactId": "94e57e92-Cee2-486d-8cc8-218c97200579",
    "ArtifactName": "Gross Margin Analysis",
    "IsSuccess": true,
    "ReportType": "PowerBIReport",
    "RequestId": "53451b83-932b-f0b0-5328-197133f46fa4",
    "ActivityId": "beb41a5d-45d4-99ee-0e1c-b99c451e9953",
    "DistributionMethod": "Workspace",
    "ConsumptionMethod": "Power BI Web",
    "SensitivityLabelId": "e3dd4e72-5a5d-4a95-b8b0-a0b52b827793",
    "ArtifactKind": "Report"
  },
  {
    "Id": "5c913f29-502b-4a1a-a089-232edaf176f7",
    "RecordType": 20,
    "CreationTime": "2023-03-15T17:22:00Z",
    "Operation": "ExportActivityEvents",
    "OrganizationId": "927c6607-8060-4f4a-a5f8-34964ac78d70",
    "UserType": 2,
    "UserKey": "100FFF92C7717B",
    "Workload": "PowerBI",
    "UserId": "jordan@contoso.com",
    "ClientIP": "192.168.1.1",
    "UserAgent": "MicrosoftPowerBIMgmt/1.2.1111.0",
    "Activity": "ExportActivityEvents",
    "IsSuccess": true,
    "RequestId": "2af6a22d-6f24-4dc4-a26a-5c234ab3afad",
    "ActivityId": "00000000-0000-0000-0000-000000000000",
    "ExportEventStartDateTimeParameter": "2023-03-17T00:00:00Z",
    "ExportEventEndDateTimeParameter": "2023-03-17T23:59:59.999Z"
  }
]

เคล็ดลับ

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

ตัวอย่างที่ 3: ดูกิจกรรมสําหรับ N วัน

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

คําขอตัวอย่าง 3

สคริปต์จะประกาศตัวแปรสองตัว:

  • $ActivityType: ชื่อการดําเนินการสําหรับกิจกรรมที่คุณกําลังตรวจสอบ
  • $NbrOfDaysToCheck: คุณสนใจตรวจสอบกี่วัน ซึ่งจะดําเนินการวนรอบที่ทํางานย้อนกลับจากวันปัจจุบัน ค่าสูงสุดที่อนุญาตคือ 28 วัน (เนื่องจากวันที่แรกสุดที่คุณสามารถเรียกใช้ได้คือ 28 วันก่อนวันปัจจุบัน)
#Input values before running the script:
$ActivityType = 'ShareReport' 
$NbrOfDaysToCheck = 7 
#-----------------------------------------------------------------------

#Use today to start counting back the number of days to check:
$DayUTC = (([datetime]::Today.ToUniversalTime()).Date)

#Iteratively loop through each of the last N days to view events:
For($LoopNbr=0; $LoopNbr -le $NbrOfDaysToCheck; $LoopNbr++)
{
    $PeriodStart=$DayUTC.AddDays(-$LoopNbr)
    $ActivityDate=$PeriodStart.ToString("yyyy-MM-dd")
    Write-Verbose "Checking $ActivityDate" -Verbose 

    #Check activity events once per loop (once per day):
    Get-PowerBIActivityEvent `
        -StartDateTime ($ActivityDate + 'T00:00:00.000') `
        -EndDateTime ($ActivityDate + 'T23:59:59.999') `
        -ActivityType $ActivityType 
}

เคล็ดลับ

คุณสามารถใช้เทคนิคการวนรอบนี้เพื่อตรวจสอบการดําเนินการใด ๆ ที่บันทึกไว้ในบันทึกกิจกรรมได้

การตอบสนองตัวอย่าง 3

นี่คือตัวอย่างการตอบสนอง JSON ซึ่งรวมถึงสองกิจกรรมที่ผู้ใช้ดําเนินการ:

  • กิจกรรมแรกแสดงให้เห็นว่ามีการสร้างลิงก์การแชร์สําหรับผู้ใช้แล้ว โปรดทราบว่า ค่า SharingAction จะแตกต่างกันโดยขึ้นอยู่กับว่าผู้ใช้สร้างลิงก์ แก้ไขลิงก์ หรือลบลิงก์หรือไม่ เพื่อความคล่องตัว กิจกรรมการแชร์ลิงก์เพียงชนิดเดียวเท่านั้นที่จะแสดงในการตอบกลับ
  • กิจกรรมที่สองแสดงว่ามีการสร้างการแชร์การเข้าถึงโดยตรงสําหรับกลุ่มแล้ว โปรดทราบว่า ค่า SharingInformation แตกต่างกันโดยขึ้นอยู่กับการดําเนินการที่ทํา เพื่อความสะดวก กิจกรรมการแชร์การเข้าถึงโดยตรงชนิดเดียวเท่านั้นที่จะแสดงในการตอบสนอง
[
  {
    "Id": "be7506e1-2bde-4a4a-a210-bc9b156142c0",
    "RecordType": 20,
    "CreationTime": "2023-03-15T19:52:42Z",
    "Operation": "ShareReport",
    "OrganizationId": "927c6607-8060-4f4a-a5f8-34964ac78d70",
    "UserType": 0,
    "UserKey": "900GGG12D2242A",
    "Workload": "PowerBI",
    "UserId": "morgan@contoso.com",
    "ClientIP": "192.168.1.1",
    "UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0",
    "Activity": "ShareReport",
    "ItemName": "Call Center Stats",
    "WorkSpaceName": "Sales Analytics",
    "SharingInformation": [
      {
        "RecipientEmail": "ellis@contoso.com",
        "RecipientName": "Turner",
        "ObjectId": "fc9bbc6c-e39b-44cb-9c8a-d37d5665ec57",
        "ResharePermission": "ReadReshare",
        "UserPrincipalName": "ellis@contoso.com"
      }
    ],
    "WorkspaceId": "e380d1d0-1fa6-460b-9a90-1a5c6b02414c",
    "ObjectId": "Call Center Stats",
    "Datasets": [
      {
        "DatasetId": "fgagrwa3-9044-3e1e-228f-k24bf72gg995",
        "DatasetName": "Call Center Data"
      }
    ],
    "ArtifactId": "81g22w11-vyy3-281h-1mn3-822a99921541",
    "ArtifactName": "Call Center Stats",
    "IsSuccess": true,
    "RequestId": "7d55cdd3-ca3d-a911-5e2e-465ac84f7aa7",
    "ActivityId": "4b8b53f1-b1f1-4e08-acdf-65f7d3c1f240",
    "SharingAction": "CreateShareLink",
    "ShareLinkId": "J_5UZg-36m",
    "ArtifactKind": "Report",
    "SharingScope": "Specific People"
  },
  {
    "Id": "b4d567ac-7ec7-40e4-a048-25c98d9bc304",
    "RecordType": 20,
    "CreationTime": "2023-03-15T11:57:26Z",
    "Operation": "ShareReport",
    "OrganizationId": "927c6607-8060-4f4a-a5f8-34964ac78d70",
    "UserType": 0,
    "UserKey": "900GGG12D2242A",
    "Workload": "PowerBI",
    "UserId": "morgan@contoso.com",
    "ClientIP": "69.132.26.0",
    "UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0",
    "Activity": "ShareReport",
    "ItemName": "Gross Margin Analysis",
    "WorkSpaceName": "Sales Analytics",
    "SharingInformation": [
      {
        "RecipientName": "SalesAndMarketingGroup-NorthAmerica",
        "ObjectId": "ba21f28b-6226-4296-d341-f059257a06a7",
        "ResharePermission": "Read"
      }
    ],
    "CapacityId": "1DB44EEW-6505-4A45-B215-101HBDAE6A3F",
    "CapacityName": "Shared On Premium - Reserved",
    "WorkspaceId": "e380d1d0-1fa6-460b-9a90-1a5c6b02414c",
    "ObjectId": "Gross Margin Analysis",
    "Datasets": [
      {
        "DatasetId": "cfafbeb1-8037-4d0c-896e-a46fb27ff229",
        "DatasetName": "Sales Data"
      }
    ],
    "ArtifactId": "94e57e92-Cee2-486d-8cc8-218c97200579",
    "ArtifactName": "Gross Margin Analysis",
    "IsSuccess": true,
    "RequestId": "82219e60-6af0-0fa9-8599-c77ed44fff9c",
    "ActivityId": "1d21535a-257e-47b2-b9b2-4f875b19855e",
    "SensitivityLabelId": "16c065f5-ba91-425e-8693-261e40ccdbef",
    "SharingAction": "Direct",
    "ArtifactKind": "Report",
    "SharingScope": "Specific People"
  }
]

หมายเหตุ

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

ตัวอย่างที่ 4: ดูกิจกรรมสามรายการสําหรับ N วัน

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

คําขอตัวอย่าง 4

สคริปต์จะประกาศตัวแปรต่อไปนี้:

  • $NbrOfDaysToCheck: คุณสนใจตรวจสอบกี่วัน ซึ่งจะดําเนินการวนรอบที่ทํางานย้อนกลับจากวันปัจจุบัน ค่าสูงสุดที่อนุญาตคือ 28 วัน (เนื่องจากวันที่แรกสุดที่คุณสามารถเรียกใช้ได้คือ 28 วันก่อนวันปัจจุบัน)
  • $Activity1: ชื่อการดําเนินการสําหรับกิจกรรมแรกที่คุณกําลังตรวจสอบ ในตัวอย่างนี้ กําลังค้นหากิจกรรมการสร้างแอป Power BI
  • $Activity2: ชื่อการดําเนินการที่สอง ในตัวอย่างนี้ กําลังค้นหากิจกรรมการอัปเดตแอป Power BI
  • $Activity3: ชื่อการดําเนินการที่สาม ในตัวอย่างนี้ กําลังค้นหากิจกรรมการติดตั้งแอป Power BI

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

ข้อควรระวัง

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

สคริปต์แสดงผลลัพธ์สําหรับวันปัจจุบัน

หมายเหตุ

เมื่อต้องการดึงข้อมูลผลลัพธ์สําหรับวันก่อนหน้าเท่านั้น—หลีกเลี่ยงผลลัพธ์ของวันบางส่วน—ดู ตัวอย่างส่งออกกิจกรรมทั้งหมดสําหรับ N วัน ก่อนหน้า)

#Input values before running the script:
$NbrOfDaysToCheck = 7
$Activity1 = 'CreateApp'
$Activity2 = 'UpdateApp'
$Activity3 = 'InstallApp'
#-----------------------------------------------------------------------
#Initialize array which will contain the full resultset:
$FullResults = @() 

#Use today to start counting back the number of days to check:
$DayUTC = (([datetime]::Today.ToUniversalTime()).Date)

#Iteratively loop through each day (<Initilize> ; <Condition> ; <Repeat>)
#Append each type of activity to an array:
For($LoopNbr=0; $LoopNbr -le $NbrOfDaysToCheck; $LoopNbr++)
{
    $PeriodStart=$DayUTC.AddDays(-$LoopNbr)
    $ActivityDate=$PeriodStart.ToString("yyyy-MM-dd")
    Write-Verbose "Checking $ActivityDate" -Verbose 

    #Get activity 1 and append its results into the full resultset:
    $Activity1Results = @()
    $Activity1Results += Get-PowerBIActivityEvent `
        -StartDateTime ($ActivityDate+'T00:00:00.000') `
        -EndDateTime ($ActivityDate+'T23:59:59.999') `
        -ActivityType $Activity1 | ConvertFrom-Json
    If ($null -ne $Activity1Results) {$FullResults += $Activity1Results}
    
    #Get activity 2 and append its results into the full resultset:
    $Activity2Results = @()
    $Activity2Results += Get-PowerBIActivityEvent `
        -StartDateTime ($ActivityDate+'T00:00:00.000') `
        -EndDateTime ($ActivityDate+'T23:59:59.999') `
        -ActivityType $Activity2 | 
    ConvertFrom-Json
    If ($null -ne $Activity2Results) {$FullResults += $Activity2Results}  

    #Get activity 3 and append its results into the full resultset:
    $Activity3Results = @()
    $Activity3Results += Get-PowerBIActivityEvent `
        -StartDateTime ($ActivityDate+'T00:00:00.000') `
        -EndDateTime ($ActivityDate+'T23:59:59.999') `
        -ActivityType $Activity3 | 
    ConvertFrom-Json
    If ($null -ne $Activity3Results) {$FullResults += $Activity3Results}
    
}  
#Convert all of the results back to a well-formed JSON object:
$FullResults = $FullResults | ConvertTo-Json

#Display results on the screen:
$FullResults

การตอบสนองตัวอย่าง 4

นี่คือตัวอย่างการตอบสนอง JSON ซึ่งรวมถึงกิจกรรมสามอย่างที่ผู้ใช้ดําเนินการ:

  • กิจกรรมแรกแสดงแอป Power BI ที่สร้างขึ้น
  • กิจกรรมที่สองแสดงว่าแอป Power BI ได้รับการอัปเดต
  • กิจกรรมที่สามแสดงว่าผู้ใช้ติดตั้งแอป Power BI แล้ว

คำเตือน

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

สําหรับสแนปช็อตของสิทธิ์แอป Power BI ทั้งหมด ให้ใช้ การดําเนินการ รับผู้ใช้แอปเป็น API ผู้ดูแลระบบ แทน

[
  {
    "Id": "65a26480-981a-4905-b3aa-cbb3df11c7c2",
    "RecordType": 20,
    "CreationTime": "2023-03-15T18:42:13Z",
    "Operation": "CreateApp",
    "OrganizationId": "927c6607-8060-4f4a-a5f8-34964ac78d70",
    "UserType": 0,
    "UserKey": "100FFF92C7717B",
    "Workload": "PowerBI",
    "UserId": "jordan@contoso.com",
    "ClientIP": "192.168.1.1",
    "UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0",
    "Activity": "CreateApp",
    "ItemName": "Sales Reconciliations App",
    "WorkSpaceName": "Sales Reconciliations",
    "OrgAppPermission": {
      "recipients": "Sales Reconciliations App(Entire Organization)",
      "permissions": "Sales Reconciliations App(Read,CopyOnWrite)"
    },
    "WorkspaceId": "9325a31d-067e-4748-a592-626d832c8001",
    "ObjectId": "Sales Reconciliations App",
    "IsSuccess": true,
    "RequestId": "ab97a4f1-9f5e-4a6f-5d50-92c837635814",
    "ActivityId": "9bb54a9d-b688-4028-958e-4d7d21ca903a",
    "AppId": "42d60f97-0f69-470c-815f-60198956a7e2"
  },
  {
    "Id": "a1dc6d26-b006-4727-bac6-69c765b7978f",
    "RecordType": 20,
    "CreationTime": "2023-03-16T18:39:58Z",
    "Operation": "UpdateApp",
    "OrganizationId": "927c6607-8060-4f4a-a5f8-34964ac78d70",
    "UserType": 0,
    "UserKey": "100GGG12F9921B",
    "Workload": "PowerBI",
    "UserId": "morgan@contoso.com",
    "ClientIP": "192.168.1.1",
    "UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0",
    "Activity": "UpdateApp",
    "ItemName": "Sales Analytics",
    "WorkSpaceName": "Sales Analytics",
    "OrgAppPermission": {
      "recipients": "Sales Reps Audience(SalesAndMarketingGroup-NorthAmerica,SalesAndMarketingGroup-Europe)",
      "permissions": "Sales Reps Audience(Read,CopyOnWrite)"
    },
    "WorkspaceId": "c7bffcd8-8156-466a-a88f-0785de2c8b13",
    "ObjectId": "Sales Analytics",
    "IsSuccess": true,
    "RequestId": "e886d122-2c09-4189-e12a-ef998268b864",
    "ActivityId": "9bb54a9d-b688-4028-958e-4d7d21ca903a",
    "AppId": "c03530c0-db34-4b66-97c7-34dd2bd590af"
  },
  {
    "Id": "aa002302-313d-4786-900e-e68a6064df1a",
    "RecordType": 20,
    "CreationTime": "2023-03-17T18:35:22Z",
    "Operation": "InstallApp",
    "OrganizationId": "927c6607-8060-4f4a-a5f8-34964ac78d70",
    "UserType": 0,
    "UserKey": "100HHH12F4412A",
    "Workload": "PowerBI",
    "UserId": "ellis@contoso.com",
    "ClientIP": "192.168.1.1",
    "UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0",
    "Activity": "InstallApp",
    "ItemName": "Sales Reconciliations App",
    "ObjectId": "Sales Reconciliations App",
    "IsSuccess": true,
    "RequestId": "7b3cc968-883f-7e13-081d-88b13f6cfbd8",
    "ActivityId": "9bb54a9d-b688-4028-958e-4d7d21ca903a"
  }
]

ตัวอย่างที่ 5: ดูกิจกรรมทั้งหมดสําหรับพื้นที่ทํางานหนึ่งวัน

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

คําขอตัวอย่าง 5

สคริปต์จะประกาศตัวแปรสองตัว:

  • $ActivityDate: วันที่คุณสนใจ รูปแบบคือ YYYY-MM-DD คุณไม่สามารถร้องขอวันที่ก่อนหน้า 28 วันก่อนวันที่ปัจจุบันได้
  • $WorkspaceName: ชื่อของพื้นที่ทํางานที่คุณสนใจ

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

ไม่มีพารามิเตอร์สําหรับ Get-PowerBIActivityEvent cmdlet ที่ช่วยให้คุณสามารถระบุพื้นที่ทํางานเมื่อตรวจสอบบันทึกกิจกรรม (ตัวอย่างก่อนหน้าในบทความนี้ใช้พารามิเตอร์ PowerShell เพื่อตั้งค่าผู้ใช้ วันที่ หรือชื่อกิจกรรมที่ระบุ) ในตัวอย่างนี้ สคริปต์ดึงข้อมูลทั้งหมดจากนั้นแยกวิเคราะห์การตอบสนอง JSON เพื่อกรองผลลัพธ์สําหรับพื้นที่ทํางานเฉพาะ

ข้อควรระวัง

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

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

#Input values before running the script:
$ActivityDate = '2023-03-22'
$WorkspaceName = 'Sales Analytics'
#----------------------------------------------------------------------
#Run cmdlet to check activity events and store intermediate results:
$Events = Get-PowerBIActivityEvent `
    -StartDateTime ($ActivityDate+'T00:00:00.000') `
    -EndDateTime ($ActivityDate+'T23:59:59.999')
    
#Convert from JSON so we can parse the data:
$ConvertedResults = $Events | ConvertFrom-Json

#Obtain specific attributes and save to a PowerShell object:
$FilteredResults = $ConvertedResults `
    | 
    Select-Object `
    @{Name="ActivityDateTime";Expression={$PSItem.CreationTime}}, ` #alias name
    Activity, `
    UserId, `
    ArtifactName, `
    WorkspaceName `
    | 
    #Filter the results:
    Where-Object {($PSItem.WorkspaceName -eq $WorkspaceName)}

#View the filtered results:
$FilteredResults 

#Optional - Save back to JSON format:
#$FilteredResults = $FilteredResults | ConvertTo-Json -Depth 10
#$FilteredResults

การตอบสนองตัวอย่าง 5

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

หมายเหตุ

หลังจากแปลงผลลัพธ์ JSON เป็นวัตถุ PowerShell แล้วค่าเวลาจะถูกแปลงเป็นเวลาท้องถิ่น ข้อมูลการตรวจสอบต้นฉบับจะถูกบันทึกในเวลามาตรฐานสากล (UTC) เสมอ ดังนั้นเราขอแนะนําให้คุณคุ้นเคยกับการใช้เวลา UTC เท่านั้น

ActivityDateTime : 4/25/2023 3:18:30 PM
Activity         : ViewReport
UserId           : jordan@contoso.com
ArtifactName     : Gross Margin Analysis
WorkSpaceName    : Sales Analytics

CreationTime     : 4/25/2023 5:32:10 PM
Activity         : ShareReport
UserId           : ellis@contoso.com
ArtifactName     : Call Center Stats
WorkSpaceName    : Sales Analytics

CreationTime     : 4/25/2023 9:03:05 PM
Activity         : ViewReport
UserId           : morgan@contoso.com
ArtifactName     : Call Center Stats
WorkSpaceName    : Sales Analytics

เคล็ดลับ

คุณสามารถใช้เทคนิคนี้เพื่อกรองผลลัพธ์ตามคุณสมบัติใด ๆ ในผลลัพธ์ ตัวอย่างเช่น คุณสามารถใช้เหตุการณ์ RequestId เฉพาะเพื่อวิเคราะห์เหตุการณ์เฉพาะอย่างเดียวได้

ตัวอย่างที่ 6: ส่งออกกิจกรรมทั้งหมดสําหรับ N วันก่อนหน้า

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

สำคัญ

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

คําขอตัวอย่าง 6

สคริปต์จะเรียกใช้กิจกรรมทั้งหมดสําหรับชุดของวัน ซึ่งจะประกาศตัวแปรสามตัว:

  • $NbrDaysDaysToExtract: คุณสนใจในการส่งออกกี่วัน ซึ่งจะดําเนินการวนรอบ โดยทํางานย้อนหลังจากวันก่อนหน้า ค่าสูงสุดที่อนุญาตคือ 28 วัน (เนื่องจากวันที่แรกสุดที่คุณสามารถเรียกใช้ได้คือ 28 วันก่อนวันปัจจุบัน)
  • $ExportFileLocation: เส้นทางโฟลเดอร์ที่คุณต้องการบันทึกไฟล์ ต้องมีโฟลเดอร์อยู่ก่อนที่จะเรียกใช้สคริปต์ อย่าใส่อักขระเครื่องหมายทับขวา (\) ที่ส่วนท้ายของเส้นทางโฟลเดอร์ (เนื่องจากจะถูกเพิ่มโดยอัตโนมัติในขณะทํางาน) เราขอแนะนําให้คุณใช้โฟลเดอร์แยกต่างหากเพื่อจัดเก็บไฟล์ข้อมูลดิบ
  • $ExportFileName: คํานําหน้าสําหรับแต่ละชื่อไฟล์ เนื่องจากมีการบันทึกไฟล์หนึ่งไฟล์ต่อวัน สคริปต์จะเพิ่มคําต่อท้ายเพื่อระบุข้อมูลที่มีอยู่ในไฟล์ และวันที่และเวลาที่ดึงข้อมูล ตัวอย่างเช่น ถ้าคุณเรียกใช้สคริปต์เวลา 9.00 น. (UTC) ในวันที่ 25 เมษายน 2023 เพื่อแยกข้อมูลกิจกรรมสําหรับวันที่ 23 เมษายน 2023 ชื่อไฟล์จะเป็น: PBIActivityEvents-20230423-202304250900 แม้ว่าโครงสร้างโฟลเดอร์ที่จัดเก็บไว้นั้นมีประโยชน์ แต่แต่ละชื่อไฟล์ควรอธิบายตัวเองทั้งหมด

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

สคริปต์รวบรวมข้อมูลได้ถึง 28 วันผ่านไปยังวันก่อนหน้า ประทับเวลาสําหรับเหตุการณ์ที่ตรวจสอบแล้วจะอยู่ใน UTC เสมอ เราขอแนะนําให้คุณสร้างกระบวนการตรวจสอบทั้งหมดของคุณตามเวลา UTC แทนที่จะเป็นเวลาท้องถิ่นของคุณ

สคริปต์สร้างไฟล์ JSON หนึ่งไฟล์ต่อวัน ส่วนต่อท้ายของชื่อไฟล์รวมถึงประทับเวลา (ในรูปแบบ UTC) ของข้อมูลที่แยกออกมา ถ้าคุณแยกข้อมูลวันเดียวกันมากกว่าหนึ่งครั้ง คําต่อท้ายในชื่อไฟล์จะช่วยคุณระบุไฟล์ที่ใหม่กว่า

#Input values before running the script:
$NbrDaysDaysToExtract = 7
$ExportFileLocation = 'C:\Power-BI-Raw-Data\Activity-Log'
$ExportFileName = 'PBIActivityEvents'
#--------------------------------------------

#Start with yesterday for counting back to ensure full day results are obtained:
[datetime]$DayUTC = (([datetime]::Today.ToUniversalTime()).Date).AddDays(-1) 

#Suffix for file name so we know when it was written:
[string]$DateTimeFileWrittenUTCLabel = ([datetime]::Now.ToUniversalTime()).ToString("yyyyMMddHHmm")

#Loop through each of the days to be extracted (<Initilize> ; <Condition> ; <Repeat>)
For($LoopNbr=0 ; $LoopNbr -lt $NbrDaysDaysToExtract ; $LoopNbr++)
{
    [datetime]$DateToExtractUTC=$DayUTC.AddDays(-$LoopNbr).ToString("yyyy-MM-dd")

    [string]$DateToExtractLabel=$DateToExtractUTC.ToString("yyyy-MM-dd")
    
    #Create full file name:
    [string]$FullExportFileName = $ExportFileName `
    + '-' + ($DateToExtractLabel -replace '-', '') `
    + '-' + $DateTimeFileWrittenUTCLabel `
    + '.json' 

    #Obtain activity events and store intermediary results:
    [psobject]$Events=Get-PowerBIActivityEvent `
        -StartDateTime ($DateToExtractLabel+'T00:00:00.000') `
        -EndDateTime ($DateToExtractLabel+'T23:59:59.999')

    #Write one file per day:
    $Events | Out-File "$ExportFileLocation\$FullExportFileName"

    Write-Verbose "File written: $FullExportFileName" -Verbose 
}
Write-Verbose "Extract of Power BI activity events is complete." -Verbose

การใช้ Get-PowerBIActivityEvent PowerShell cmdlet แทน การรับกิจกรรมกิจกรรม REST API

  • cmdlet ช่วยให้คุณสามารถร้องขอกิจกรรมหนึ่งวันในแต่ละครั้งที่คุณเรียกใช้โดยใช้ cmdlet ในขณะที่คุณสื่อสารกับ API โดยตรง คุณสามารถร้องขอได้เพียงหนึ่งชั่วโมงต่อคําขอ API เท่านั้น
  • cmdlet จัดการโทเค็นความต่อเนื่องให้คุณ ถ้าคุณใช้ API โดยตรง คุณจําเป็นต้องตรวจสอบโทเค็นต่อเนื่องเพื่อดูว่ามีผลลัพธ์ใด ๆ เพิ่มเติมให้มาหรือไม่ API บางตัวจําเป็นต้องใช้โทเค็นการแบ่งหน้าและโทเค็นต่อเนื่องเพื่อเหตุผลด้านประสิทธิภาพเมื่อส่งกลับข้อมูลจํานวนมาก พวกเขาส่งกลับชุดแรกของบันทึก แล้ว ด้วยโทเค็นต่อเนื่องคุณสามารถเรียกใช้ API ที่ตามมาเพื่อเรียกใช้ชุดถัดไปของบันทึก คุณดําเนินต่อการเรียกใช้ API จนกว่าโทเค็นต่อเนื่องจะไม่ถูกส่งกลับ การใช้โทเค็นความต่อเนื่องเป็นวิธีที่จะรวมคําขอ API หลายรายการเพื่อให้คุณสามารถรวมชุดผลลัพธ์แบบตรรกะได้ สําหรับตัวอย่างของการใช้โทเค็นต่อเนื่อง ดูกิจกรรมกิจกรรม REST API
  • cmdlet จัดการการหมดอายุของโทเค็นการเข้าถึง Microsoft Entra ID สําหรับคุณ หลังจากที่คุณได้รับรองความถูกต้องแล้ว โทเค็นการเข้าถึงของคุณจะหมดอายุหลังจากหนึ่งชั่วโมง (ตามค่าเริ่มต้น) ในกรณีนี้ cmdlet จะร้องขอโทเค็นการรีเฟรชให้คุณโดยอัตโนมัติ ถ้าคุณสื่อสารกับ API โดยตรง คุณจําเป็นต้องร้องขอโทเค็นการรีเฟรช

สําหรับข้อมูลเพิ่มเติม ดู เลือก API หรือ cmdlet ของ PowerShell

หมายเหตุ

การตอบกลับตัวอย่างถูกเว้นไว้เนื่องจากเป็นผลลัพธ์ที่คล้ายกับคําตอบที่แสดงในตัวอย่างก่อนหน้านี้

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