Exemplo de consultas de banco de dados SQL do Azure para usar o serviço Relatório Organizacional do Microsoft Learn

Este artigo ajudará você a consultar o Serviço de Relatórios Organizacionais do Microsoft Learn ao sincronizar com um banco de dados SQL do Azure . Se você não estiver familiarizado com os detalhes do serviço Learn Organizational Reporting ou seus casos de uso, recomendamos primeiro que você revise o artigo de visão geral do recurso .

Obter progresso para o usuário por meio da ID de Objeto do Microsoft Entra

A coluna userId refere-se ao ID do usuário do perfil do Learn, não ao ID do objeto do Microsoft Entra. Para recuperar o progresso de um usuário específico usando uma ID de Objeto do Microsoft Entra, junte-se aos usuários e às tabelas de progresso.

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

Obter o progresso com uma porcentagem concluída para um item de treinamento específico do Learn

O percentual de conclusão pode ser calculado com base no durationInMinutes, que pode ser calculado durante a recuperação de dados de progresso para itens de treinamento específicos do 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