เข้าถึงบันทึกกิจกรรม 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
หมายเหตุ
การตอบกลับตัวอย่างถูกเว้นไว้เนื่องจากเป็นผลลัพธ์ที่คล้ายกับคําตอบที่แสดงในตัวอย่างก่อนหน้านี้
เนื้อหาที่เกี่ยวข้อง
สําหรับข้อมูลเพิ่มเติมที่เกี่ยวข้องกับบทความนี้ โปรดดูทรัพยากรต่อไปนี้:
- ติดตามกิจกรรมของผู้ใช้ใน Power BI
- การวางแผนการใช้งาน Power BI: การตรวจสอบระดับผู้เช่า
- แผนการทํางานสําหรับการปรับใช้ผ้า: การตรวจสอบและการตรวจสอบ
- คำถาม ลองถาม ชุมชน Fabric
- คำ แนะ นำ มีส่วนช่วยปรับปรุง ผ้า