- はじめに
- Microsoft Learn Catalog APIへのクエリを考える
- Microsoft Learn Catalog APIへ接続して値を取得する
- Power Query エディターで必要な列を整理するポイント
- Power Query エディターで必要な列を整理する
- クエリをマージし、認定資格とラーニングパスの対応表を作る
- リレーションを確認する
- データカテゴリの設定を行う
- レポートを作成する
- おわりに
はじめに
業務の一環でMicrosoft認定資格の取得推進にも関わっています。
Microsoft認定資格で各試験のサイトに行くと、図のように関連するMicrosoft Learnのラーニングパスを表示してくれます。
引用元:Microsoft 認定:Azure Administrator Associate - Certifications | Microsoft Learn
これを社内用にまとめたページがあれば便利だなと常々思っていたのですが、ふと、「もしかしたらAPIがあるのでは?」と思い調べてみたら本当にありました。*1
今回は、このAPIを使って、Microsoft認定資格と対応したMicrosoft Learnの一覧をPower BIで作ってみたいと思います。
Microsoft Learn Catalog APIへのクエリを考える
認定資格側の値としては認定資格や試験が、Learnのコンテンツ側の値としてはラーニングパスやモジュールがあるのですが、今回は、「認定資格」と「ラーニングパス」の関係に絞ります。
Microsoft Learn Catalog APIを参照し、クエリを考えます。
まず、認定資格なので、type
はcertifications
になります。また、言語も指定できるので、locale
をja-jp
にしておきましょう。
組み合わせるとこうなりました。
https://learn.microsoft.com/api/catalog/?type=certifications&locale=ja-jp
同様に、ラーニングパスはこのようになります。
https://learn.microsoft.com/api/catalog/?type=learningPaths&locale=ja-jp
※ typeは複数指定も出来ますが、今回は分けて取得しておいて、必要に応じてクエリで結合することにします。*2
一度ブラウザにクエリを入力して、値を拾えるか試しておきましょう。
Microsoft Learn Catalog APIへ接続して値を取得する
Power BI Desktopを起動し、ソースを「Web」とします。
まずは認定資格のクエリを入力します。
無事接続できました。
同様にラーニングパスも取得します。
クエリ名は分かりやすく変えておきます。
Power Query エディターで必要な列を整理するポイント
Power Query エディターで必要な列を整理していきます。どれを展開しどれを削除するかはケースバイケースなのですが、自分でやってみた限りのポイントです。
クエリ内でユニークになる値を決める
例えば、認定資格のクエリであれば、certifications.uidがユニークになるようにします。
読み込んだ時点ではユニークになっていると思うのですが、例えば、認定試験で「新しい行に展開する」を不用意に選ぶと
一つの認定資格に複数の試験が必要なケースなどでcertifications.uidがユニークではなくなってしまいます。
最終的にこういったデータが欲しいケースはあると思いますが、認定資格のクエリであれば認定資格はユニークにしておいた方がいいと思います。
certifications.uidの様な「uid」が書かれた列を活用する
認定資格やラーニングパスでそれぞれuidとしてMicrosoft側で設定しているIDがあるようなので、これを使わない手はありません。
後でリレーションを設定したりクエリを結合するときに便利なので、上記のユニークになる値を決めるときやリレーションを設定する時、クエリを結合するときに積極的に活用しましょう。
列を展開した後の列名は適宜修正する
列を展開する際にプレフィックスの設定が可能ですが、同じ意味を持つ値に別の列名が付いていると後でややこしいので、適宜修正しましょう。
特に、前述のcertifications.uidのようなユニークIDはすべてのクエリ内で統一しておいた方が便利です。
Power Query エディターで必要な列を整理する
では、実際に整理していきましょう。
認定資格で必要な列を整理する
まず、認定のタイプで絞り込みます。今回は、マイクロソフトの認定ポスターに載っている試験に限定したいので、certifications.certification_typeを"fundamentals", "role-based" ,"specialty"に絞ります。
その上で、不要な列を削除して、列の取捨選択を行っていきます。
最終的に残った列です。
- certifications.url
- certifications.title
- certifications.uid
- certifications.subtitle
- certifications.exams
- certifications.study_guide
認定資格で必要な列を整理する
次は、ラーニングパスの方を整理していきます。ラーニングパスは所要時間やモジュールの情報、レーティングなど色々あるのですが、今回は以下の4列に絞りました。
- learningPaths.title
- learningPaths.summary
- learningPaths.uid
- learningPaths.url
クエリをマージし、認定資格とラーニングパスの対応表を作る
認定資格のクエリをベースにラーニングパスの対応表を作って行きます。ただ、現時点では認定資格とラーニングパスを紐づける情報がありません。
実は、認定資格のクエリの中にあるcertifications.study_guideを展開するとラーニングパスのUIDが出てくるのですが、前述の通り、認定資格のクエリはcertifications.uidをユニークな値として保持しておきたいので、認定資格のクエリをコピーして利用する事にします。
クエリをコピーして、名前を変えておきます。
その上で、certifications.uidとcertifications.study_guide以外の列は削除します。
certifications.study_guideを展開し、次のようなデータを得ました。
今回実はちょっと困るのが、実は認定資格に対してラーニングパスではなくモジュールが紐づいているケースがあります。
ただ、今回はモジュールの情報は取得していないので、ラーニングパスを持っているものに限定したいと思います*3
最後に、列名を変えておきます。今回はラーニングパスに絞ったので、certifications.study_guide.uidとして展開された列はlearningPaths.uidと同じものになるはずなので、揃えます。
リレーションを確認する
クエリの準備は出来たので、リレーションを確認します。
今回、事前に列名をそろえていたので、リレーションは自動で設定されています。*4
ただ、このままだとレポートで認定資格を選んだ時にラーニングパスが絞り込まれませんので、リレーションシップを編集し、クロスフィルターを双方向にしておきます。
今回は二つのリレーションを両方ともクロスフィルターにしました。
データカテゴリの設定を行う
URLの列に対してデータ カテゴリをWebに設定しておきます。
これによって、後ほどレポートを作成する際、ハイパーリンクが有効になります。
詳細は下記の記事も参考にしてください。
レポートを作成する
ではレポートを作ってみましょう。
ごくシンプルに、テーブルを作りました。左ペインは、認定資格が並んでいます。
右ペインは、ラーニングパスが並んでいます。
左ペインで認定資格を選択すると、その認定資格に対応したラーニングパスだけに絞り込まれます。リンクのアイコンから実際のサイトを開くことも可能です。
おわりに
これで、Microsoft Learn Catalog APIを使ってMicrosoft認定資格の一覧を作る事が出来ました。絞り込んでリンクをクリックすればラーニングパスに移動できるので便利です。
もっと手を加えると、モジュールを表示させたり、認定資格ではなく試験単位で表示させたり、レーティングを使って人気のラーニングパスを表示させる事も出来ます。ニーズに合わせて色々応用してみてください。
*1:夜にたまたま発見して、興奮してなかなか寝付けませんでした
*2:必ずしも1:1の対応ではないので、後々の事を考えるとこの方が便利、というのが個人的な見解です
*3:やるとなると、モジュールとラーニングパスを同じUID列で区別できるようにするデータを用意するか、モジュールとラーニングパスを分けて管理するか、どちらかでしょうか…
*4:もし設定されていない場合は手動で設定するか、列名を確認してください。
舟越 匠(日本ビジネスシステムズ株式会社)
人材開発部に所属。社内向けの技術研修をメインにしつつ、JBS Tech BlogやMS認定資格取得の推進役もやっています。資格としてはAzure Solutions Architect Expertを所持。好きなサービスはPower Automate / Logic Apps。好きなアーティストはZABADAK。
担当記事一覧