Power BI och Excel

Hämta din kompetensdata från MuchSkills till Excel eller Power BI med Power Query. Du skapar en Read-klient i MuchSkills, klistrar in en fråga i en tom Power Query och får en tabell med en rad per person och kompetens, som uppdateras när du vill.

Uppdaterad

Anslut på egen handAdministratörer och HRIT

Vem
En Owner eller Admin i MuchSkills skapar klienten, sedan kan alla med Excel eller Power BI hämta datan
Du behöver
En API-klient med behörigheten Read
Verktyg
Power Query i Excel, Power BI Desktop och Power BI-tjänsten
Uppdatering
Vid behov, eller enligt schema i Power BI-tjänsten

Så fungerar det

Power QueryInnehåller ditt Client ID och din Client Secret
Först token, sedan POST med 300 personer per sida
MuchSkills APISkickar tillbaka profiler med kompetenser och nivåer
Vid varje uppdatering
Din tabellEn rad per person och kompetens, i Excel eller Power BI

Frågan på den här sidan gör tre saker vid varje uppdatering. Den byter ditt Client ID och din Client Secret mot en åtkomsttoken. Den läser profilsökningen, 300 personer åt gången, med POST-anrop. Sedan gör den om resultatet till en tabell med en rad per person och kompetens. Den använder funktionen Web.Contents med alternativen Content, Headers, RelativePath och Query. Microsofts referens för Web.Contents

Innan du börjar

  • En API-klient med behörigheten Read. En Owner eller Admin skapar den under Team/Org › Settings › API Access. Stegen finns i MuchSkills API och API Access.
  • Excel med Power Query, eller Power BI Desktop. För schemalagd uppdatering behöver du också åtkomst till en arbetsyta i Power BI.
  • En privat fil. Frågan innehåller din Client Secret. Behåll arbetsboken eller rapportfilen för dig själv och dela resultaten.

Steg

I MuchSkills-appen

  1. Skapa en Read-klient. Gå till Team/Org › Settings › API Access, klicka på New Client, ge den ett namn, till exempel Power BI-export, markera Read under Scopes och klicka på Create Client. Kopiera Client ID och Client Secret innan du klickar på Done.

I Excel eller Power BI Desktop

  1. Öppna en tom fråga. I Excel väljer du Data › Get Data › From Other Sources › Blank Query. I Power BI Desktop väljer du Home › Get data › Blank query.
  2. Klistra in frågan. I Power Query-redigeraren väljer du Home › Advanced Editor, raderar det som står där och klistrar in den här frågan. Ersätt YOUR_CLIENT_ID och YOUR_CLIENT_SECRET med dina värden och behåll citattecknen. Klicka på Done.
let
    ClientId = "YOUR_CLIENT_ID",
    ClientSecret = "YOUR_CLIENT_SECRET",
    BaseUrl = "https://app.muchskills.com",
    PageSize = 300,

    // 1. Hämta en åtkomsttoken. En ny hämtas vid varje uppdatering.
    TokenResponse = Json.Document(Web.Contents(BaseUrl, [
        RelativePath = "oauth2/token",
        Headers = [#"Content-Type" = "application/x-www-form-urlencoded"],
        Content = Text.ToBinary(Uri.BuildQueryString([
            grant_type = "client_credentials",
            client_id = ClientId,
            client_secret = ClientSecret
        ]))
    ])),
    Token = TokenResponse[access_token],

    // 2. Läs en sida med profiler. Sökningen är en POST:
    //    skip och limit står i adressen, brödtexten är {}.
    GetPage = (Skip as number) as record =>
        Json.Document(Web.Contents(BaseUrl, [
            RelativePath = "api/v2/profile/search",
            Query = [skip = Text.From(Skip), limit = Text.From(PageSize)],
            Headers = [
                Authorization = "Bearer " & Token,
                #"Content-Type" = "application/json"
            ],
            Content = Text.ToBinary("{}")
        ])),

    // 3. Läs alla sidor.
    FirstPage = GetPage(0),
    Total = FirstPage[pagination][total],
    MoreSkips = List.Numbers(PageSize, List.Max({0, Number.RoundUp(Total / PageSize) - 1}), PageSize),
    Pages = {FirstPage} & List.Transform(MoreSkips, GetPage),
    Profiles = List.Combine(List.Transform(Pages, each _[data])),

    // 4. En rad per person och kompetens.
    OrEmpty = (x) => if x = null then {} else x,
    Rows = List.Combine(List.Transform(Profiles, (person) =>
        List.Combine(List.Transform(OrEmpty(Record.FieldOrDefault(person, "skillTypes", null)), (category) =>
            List.Transform(OrEmpty(Record.FieldOrDefault(category, "skills", null)), (skill) => [
                Name = person[profile][name],
                Email = person[profile][email],
                Department = Record.FieldOrDefault(person[profile], "department", null),
                #"Skill category" = category[type],
                Skill = skill[name],
                #"Own level (1-9)" = Record.FieldOrDefault(skill, "level", null),
                #"Validated level (1-9)" = Record.FieldOrDefault(skill, "validatedLevel", null)
            ])
        ))
    )),
    Result = Table.FromRecords(Rows)
in
    Result
  1. Tillåt anslutningen. Om Power Query frågar hur den ska ansluta till https://app.muchskills.com väljer du Anonymous och klickar på Connect. Om den frågar om sekretessnivåer väljer du Organizational.
  2. Läs in tabellen. I Excel väljer du Home › Close & Load. I Power BI Desktop väljer du Home › Close & Apply. När du vill ha färsk data senare väljer du Data › Refresh All i Excel eller Refresh i Power BI Desktop.

I Power BI-tjänsten (valfritt)

  1. Publicera och ange autentiseringsuppgifter. Publicera rapporten till en arbetsyta. Öppna inställningarna för den semantiska modellen och gå till Data source credentials. Redigera där autentiseringsuppgifterna för https://app.muchskills.com: välj Anonymous och sekretessnivån Organizational och logga sedan in.
  2. Schemalägg uppdateringen. Slå på schemalagd uppdatering i samma inställningar och välj hur ofta. Ingen gateway behövs. Microsofts guide till datauppdatering i Power BI

Kontrollera att det fungerade

  • Du får en tabell med en rad per person och kompetens, med varje persons egen nivå och eventuell validerad nivå.
  • Antalet unika e-postadresser i tabellen stämmer med antalet personer i din organisation i MuchSkills.
  • I Power BI-tjänsten visar uppdateringshistoriken en lyckad uppdatering.

Det här får du

  • Kompetenser i dina egna rapporter. Kombinera data från MuchSkills med HR-, ekonomi- eller projektdata i Power BI eller Excel.
  • Färska siffror utan exporter. En uppdatering hämtar aktuell data, så ingen behöver ladda ner och klistra in filer.
  • Egen bedömning och chefens bedömning sida vid sida. Båda nivåerna finns i tabellen, så du ser var de skiljer sig åt.

Bra att veta

Nivåerna går från 1 till 9. 1 till 3 motsvarar Beginner, 4 till 6 Intermediate och 7 till 9 Expert. Den validerade nivån är den nivå som en chef har bekräftat. Har ingen chef validerat kompetensen är fältet tomt.

POST-anrop måste vara anonyma. Power Query skickar bara POST-anrop när anslutningen är inställd på Anonymous. Därför hämtar frågan sin egen token i stället för att använda sparade autentiseringsuppgifter. Microsofts anteckningar om Web-anslutningen

Håll basadressen fast. Power BI-tjänsten kan uppdatera den här frågan eftersom adressen alltid är https://app.muchskills.com, och sökvägen och sidindelningen läggs till med RelativePath och Query. Om du ändrar frågan ska du behålla det mönstret. Att sätta ihop adressen som text kan göra att schemalagd uppdatering slutar fungera.

Sidindelning. Varje sida rymmer upp till 300 personer. Frågan läser totalen från den första sidan och hämtar resten.

Begränsat antal anrop. Uppdaterar du många frågor på en gång kan MuchSkills svara med 429 Too Many Requests. Vänta då en minut och uppdatera igen.

Återkalla om filen har spridits. Om filen hamnar hos någon som inte ska ha den klickar du på Revoke för klienten i API Access och skapar en ny.

Felsökning

Det här ser duVarförGör så här
Ett fel med (404): Not FoundDatan lästes in med From Web, eller så ändrades frågan till att skicka en GETKlistra in frågan från den här sidan igen och ändra bara de två värdena
Ett fel med (400): Bad Request från oauth2/tokenClient ID eller Client Secret är fel, eller så har citattecknen tagits bortKontrollera båda värdena. Om du har tappat bort din secret återkallar du klienten och skapar en ny
Ett fel med (401): UnauthorizedKlienten har återkallats, eller så avvisades tokenUppdatera en gång till. Om felet kvarstår skapar du en ny klient och använder dess värden
Ett fel med (429)För många anrop på kort tidVänta en minut och uppdatera
"Web.Contents with the Content option is only supported when connecting anonymously"Autentiseringsuppgifterna för https://app.muchskills.com är inte AnonymousI Data source settings redigerar du behörigheterna för adressen och väljer Anonymous
En fråga om sekretessnivåer eller ett Formula.Firewall-felPower Query kontrollerar hur datakällor får kombinerasSätt sekretessnivån för https://app.muchskills.com till Organizational
Power BI-tjänsten säger att den semantiska modellen har en dynamisk datakälla och inte kan uppdaterasFrågan bygger sin adress av sammanfogad textHåll basadressen fast och lägg till sökvägar med RelativePath och Query, som i frågan på den här sidan
Varför kan vi inte använda From Web i Excel?

From Web skickar en GET-förfrågan. Sökningen efter kompetensprofiler i MuchSkills tar bara emot POST och svarar på GET med 404 Not Found. Frågan på den här sidan skickar rätt typ av förfrågan och hämtar sin token själv.

Varför väljer vi Anonymous om API:et kräver en token?

Frågan hämtar en token från MuchSkills på egen hand, med hjälp av ditt Client ID och din Client Secret, och skickar med den i varje anrop. Power Query tillåter bara POST-anrop när anslutningen är inställd på Anonymous.

Fungerar schemalagd uppdatering i Power BI-tjänsten?

Ja. Basadressen ligger fast i frågan, och sökväg och sidindelning läggs till via alternativen RelativePath och Query. Det gör att Power BI-tjänsten kan uppdatera frågan. Ställ in autentiseringsuppgifterna för datakällan på Anonymous efter att du har publicerat.

Behöver vi en datagateway?

Nej. MuchSkills är en molntjänst som Power BI-tjänsten når via internet, så den semantiska modellen uppdateras utan gateway.

Är det säkert att ha Client Secret i frågan?

Alla som kan öppna frågan kan läsa hemligheten. Använd en klient med enbart Read-behörighet, dela rapporten eller den inlästa tabellen i stället för filen, och återkalla klienten i API Access om filen hamnar någonstans där den inte borde vara.

Måste vi förnya en token?

Nej. Varje uppdatering begär en ny token från MuchSkills, så det finns inget att förnya.

Kan vi även läsa in kompetenslistor, certifikat eller tillgänglighet?

Ja. Kopiera frågan, behåll delen som hämtar token och byt sökväg till en annan endpoint, till exempel api/v1/analysis för analyslistor. GET-endpoints använder inte alternativet Content.

Kontrollerar kalendern för Daniel...

Fråga oss vad som helst

En riktig person svarar, oftast samma arbetsdag.

Livewebbinarium · 30 Oct, 10:00 CET

How to analyse the Skill Gaps in your organisation

MuchSkills allows organisations to conduct an in-depth skills gap analysis in a matter of minutes and uncover the skill gaps that hurt organisational performance In this webinar, you will learn how t…