Freigeben über


Beispiel für Azure SQL-Datenbankabfragen für die Verwendung des Microsoft Learn-Diensts für die Organisationsberichterstattung

Dieser Artikel unterstützt Sie bei der Abfrage des Microsoft Learn Organizational Reporting Service bei der Synchronisierung mit einer Azure SQL-Datenbank. Wenn Sie nicht mit den Details des Learn Organizational Reporting Service oder der Anwendungsfälle dafür vertraut sind, empfehlen wir Ihnen, zuerst den Artikel Featureübersicht zu überprüfen.

Abrufen des Fortschritts für den Benutzer über die Microsoft Entra-Objekt-ID

Die Spalte userId bezieht sich auf die Benutzer-ID des Learn-Profils, nicht auf die Microsoft Entra-Objekt-ID. Um den Fortschritt für einen bestimmten Benutzer mithilfe einer Microsoft Entra-Objekt-ID abzurufen, verknüpfen Sie die Benutzer- und Fortschrittstabellen.

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

Abrufen des Fortschritts mit dem Prozentwert des Abschlusses für ein bestimmtes Lernschulungsmodul.

Der Prozentsatz der Fertigstellung kann basierend auf dem durationInMinutesberechnet werden, der beim Abrufen von Fortschrittsdaten für bestimmte Microsoft Learn-Schulungselemente berechnet werden kann.

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