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

บทความนี้มีเป้าหมายเป็นผู้ดูแลระบบ Power BI ที่ต้องการเข้าถึงและวิเคราะห์ข้อมูลที่มาจากบันทึกกิจกรรมของ Power BI ซึ่งมุ่งเน้นไปที่การค้นคืนทางโปรแกรมของกิจกรรม Power BI โดยใช้ cmdlet รับ-PowerBIActivityEvent จากโมดูลการจัดการ Power BI ประวัติความเป็นมาสูงสุด 30 วัน 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: ติดตั้งมอดูล Power BI PowerShell ทั้งหมด หากคุณติดตั้งไว้ก่อนหน้านี้ เราขอแนะนําให้คุณอัปเดตโมดูลเพื่อให้แน่ใจว่าคุณกําลังใช้เวอร์ชันที่เผยแพร่ล่าสุด
  • บทบาทผู้ดูแลระบบผ้า: สคริปต์ตัวอย่างถูกออกแบบมาเพื่อใช้โฟลว์การรับรองความถูกต้องแบบโต้ตอบ ดังนั้นผู้ใช้ที่เรียกใช้สคริปต์ตัวอย่างของ PowerShell ต้องลงชื่อเข้าใช้เพื่อใช้ Power BI REST API ในการดึงข้อมูลบันทึกกิจกรรม ผู้ใช้ที่รับรองความถูกต้องต้องเป็นสมาชิกของบทบาทผู้ดูแลระบบ Power BI (เนื่องจากการเรียกคืนเหตุการณ์กิจกรรมจะเสร็จสิ้นด้วย API ของผู้ดูแลระบบ) การรับรองความถูกต้องของบริการหลักอยู่นอกขอบเขตสําหรับตัวอย่างการเรียนรู้เหล่านี้

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

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

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

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

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

Connect-PowerBIServiceAccount

สำคัญ

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

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

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

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

เคล็ดลับ

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

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

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

  • $UserEmailAddr: ที่อยู่อีเมลสําหรับผู้ใช้ที่คุณสนใจ
  • $ActivityDate: วันที่คุณสนใจ รูปแบบคือ YYYY-MM-DD (รูปแบบ ISO 8601) คุณไม่สามารถร้องขอวันที่ก่อนหน้า 30 วันก่อนวันที่ปัจจุบันได้
#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: คุณสนใจตรวจสอบกี่วัน ซึ่งจะดําเนินการวนรอบที่ทํางานย้อนกลับจากวันปัจจุบัน ค่าสูงสุดที่อนุญาตคือ 30 วัน (เนื่องจากวันที่แรกสุดที่คุณสามารถเรียกใช้ได้คือ 30 วันก่อนวันปัจจุบัน)
#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: คุณสนใจตรวจสอบกี่วัน ซึ่งจะดําเนินการวนรอบที่ทํางานย้อนกลับจากวันปัจจุบัน ค่าสูงสุดที่อนุญาตคือ 30 วัน (เนื่องจากวันที่แรกสุดที่คุณสามารถเรียกใช้ได้คือ 30 วันก่อนวันปัจจุบัน)
  • $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 คุณไม่สามารถร้องขอวันที่ก่อนหน้า 30 วันก่อนวันที่ปัจจุบันได้
  • $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 ได้ ตัวอย่างนี้จะเรียกใช้กิจกรรมทั้งหมดสําหรับผู้ใช้ทั้งหมดนานถึง 30 วัน ส่งออกข้อมูลไปยังไฟล์ JSON หนึ่งไฟล์ต่อวัน

สำคัญ

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

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

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

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

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

สคริปต์รวบรวมข้อมูลสูงสุด 30 วันจนถึงวันก่อนหน้า ประทับเวลาสําหรับเหตุการณ์ที่ตรวจสอบแล้วจะอยู่ใน 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 (ก่อนหน้านี้เรียกว่า Azure Active Directory) หมดอายุของโทเค็นการเข้าถึงสําหรับคุณ หลังจากที่คุณได้รับรองความถูกต้องแล้ว โทเค็นการเข้าถึงของคุณจะหมดอายุหลังจากหนึ่งชั่วโมง (ตามค่าเริ่มต้น) ในกรณีนี้ cmdlet จะร้องขอโทเค็นการรีเฟรชให้คุณโดยอัตโนมัติ ถ้าคุณสื่อสารกับ API โดยตรง คุณจําเป็นต้องร้องขอโทเค็นการรีเฟรช

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

หมายเหตุ

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

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