Exemple de interogări de bază de date SQL Azure pentru utilizarea serviciului de raportare organizațională Microsoft Learn

Acest articol vă va ajuta să interogați serviciul de raportare organizațională Microsoft Learn atunci când sincronizați cu o bază de date SQL Azure . Dacă nu sunteți familiarizat cu detaliile serviciului De raportare organizațională sau cu cazurile de utilizare pentru aceasta, vă recomandăm să revizuiți mai întâi articolul prezentare generală a caracteristicilor ..

Obțineți progresul pentru utilizator prin ID-ul de obiect Microsoft Entra

Coloana userId se referă la ID-ul de utilizator Al profilului Learn, nu la ID-ul de obiect Microsoft Entra. Pentru a regăsi progresul pentru un anumit utilizator utilizând un ID de obiect Microsoft Entra, asociați-vă utilizatorilor și tabelelor de progres.

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

Obțineți progresul cu procentul de finalizare pentru un anumit element de instruire Learn

Finalizarea procentuală poate fi calculată pe baza durationInMinutes, care poate fi calculată în timp ce regăsiți datele de progres pentru anumite elemente de instruire Microsoft Learn.

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