Microsoft Learn 조직 보고 서비스를 사용하기 위한 샘플 Azure SQL 데이터베이스 쿼리

이 문서에서는 Azure SQL 데이터베이스에 동기화할 때 Microsoft Learn 조직 보고 서비스에 쿼리하는 방법을 도와드립니다. Learn Organizational Reporting Service의 세부 정보 또는 사용 사례에 대해 잘 모르는 경우 먼저 기능 개요 문서를 검토하는 것이 좋습니다.

Microsoft Entra 개체 ID를 통해 사용자 진행률 가져오기

userId 열은 Microsoft Entra 개체 ID가 아닌 Learn 프로필 사용자 ID를 참조합니다. Microsoft Entra 개체 ID를 사용하여 특정 사용자의 진행률을 검색하려면 사용자 및 진행률 테이블을 조인합니다.

DECLARE @aadObjectId VARCHAR(50)

SELECT users.AADObjectId, progress.*
FROM users_TENANT_ID_HERE users
JOIN progress_TENANT_ID_HERE progress ON users.userId = progress.userId
WHERE users.AADObjectId = @aadObjectId

특정 Learn 학습 항목에 대해 완료율로 진행률 가져오기

완료율은 특정 Microsoft Learn 학습 항목에 대한 프로세스 데이터를 검색하는 동안 계산할 수 있는 durationInMinutes을 기반으로 계산할 수 있습니다.

DECLARE @sourceType NVARCHAR(50)
DECLARE @sourceUid NVARCHAR(300)

-- If querying for a specific user:
-- DECLARE @aadObjectId VARCHAR(50)

SELECT
    users.AADObjectId,
    @sourceUid AS SourceUid,
    @sourceType AS SourceType,
    progress.XPReason,
    progress.XP,
    progress.AwardedOn,
    CASE
        WHEN progress.AwardedOn IS NOT NULL THEN
        (
            SELECT 1
        )

        WHEN @sourceType = 'LearningPath' THEN
        (
            -- User completed minutes of learning path
            SELECT SUM(m.durationInMinutes)
            FROM HierarchyLearningPathModule lpm
            JOIN HierarchyModule m ON m.moduleUid = lpm.ModuleUid
            JOIN progress_TENANT_ID_HERE p ON p.SourceUid = lpm.ModuleUid
            WHERE lpm.LearningPathUid = @sourceUid
            AND p.userId = users.userId
            AND p.SourceType = 'Module'
            AND p.XPReason = 'points.module.basic.completed'
        ) / CAST(
        (
            -- Total duration of learning path
            SELECT lp.durationInMinutes
            FROM HierarchyLearningPath lp
            WHERE lp.LearningPathUid = @sourceUid
        ) AS DECIMAL(5, 2))

        WHEN @sourceType = 'Module' THEN
        (
            -- User completed minutes of module
            SELECT SUM(unit.durationInMinutes)
            FROM progress_TENANT_ID_HERE p
            JOIN HierarchyUnit unit ON unit.unitUid = p.SourceUid
            AND unit.moduleUid = @sourceUid
            AND p.userId = users.userId
            AND p.SourceType = 'Unit'
            AND p.XPReason = 'points.unit.basic.completed'
        ) / CAST(
        (
            -- Total duration of module
            SELECT m.durationInMinutes
            FROM HierarchyModule m
            WHERE m.moduleUid = @sourceUid
        ) AS DECIMAL(5, 2))
    END AS PercentComplete
FROM users_TENANT_ID_HERE users
LEFT JOIN progress_TENANT_ID_HERE progress
ON users.userId = progress.userId
AND progress.SourceType = @sourceType
AND progress.SourceUid = @sourceUid
-- If querying for a specific user:
-- WHERE users.AADObjectId = @aadObjectId