カテゴリー
Office Windows

Excelでピボットテーブルの集計済みの表を分解する

Excelでピボットテーブルのような2次元表(マトリックス)から、一方向の列に並んだリストに分解したいことってたまにあると思います。

個人的に良く直面するのは、調整さんのイベントページでダウンロードできるCSVから出席簿を作るってやつ。

とある半年間の出演者リスト

下のブログにあるようなピボットテーブルウィザードを用いて集計し直すやり方では、行タイトルや列タイトル以外のデータにあたる部分は全て数字(足し算できるもの)として取り扱われるので、○や△が並んだ表だとぱっと見上手く行かないように見えてしまいます。

で、それ以外のやり方をYouTubeで見かけたのを元に、自分で分かりやすく手順に落とし直したのをブログに残しておこうと思います。


分解したい表の範囲を選択する

リボンの「データ」→「テーブルまたは範囲から」を実行する

テーブルの作成で、「先頭行をテーブルの見出しとして使用する」にチェックを入れてOKする

Power Query エディターが起動してくる

分解したい列を選んで「列のピボット解除」を実行する。

もしくはタイトル列以外を全部分解するときは、タイトル列を選んでから「その他の列のピボット解除」を実行。

値がある場所だけのリストに分解される

リボンの「閉じて読み込む」を実行。

分解されたデータが別シートに貼り付けられてくる。

後からもう一度Power Queryを実行したい時は

データの分解方法を後から変えたい場合は、右クリックして「テーブル」→「クエリの編集」を実行すると、Power Queryに戻って最初からやり直すことも出来ます。

ちなみにPower QueryはローカルのExcelデータだけでなく、AzureやSharePoint Online等の色んなデータソースからデータを引っぱってきて集計したりマージしたりちょっとしたETLっぽいことも対話的に出来たりします。

カテゴリー
Azure

Teamsでチームを大量に作って消したりするとエラーが出るようになった時の対処

PowerShell等でチームを250個作成→削除すると、ユーザ毎のクォータに引っかかってエラーになります。

Message: The directory object quota limit for the Principal has been exceeded. Please ask your administrator to increase the quota limit or delete objects to reduce the used quota.

This issue occurs when the service account used for group creation has created 250 directory objects in Azure Active Directory.  This is a known limitation published by Microsoft and currently there is no method to increase this limit.

https://provisionpoint.zendesk.com/hc/en-us/articles/360005345738-The-directory-object-quota-limit-for-the-Principal-has-been-exceeded

このときは、Microsoft 365管理ポータルで見ると削除済みのグループにたくさんのグループが並んでました。(下図は削除後なので1行しかありませんが)

デフォルトだと削除後30日間グループが保持されてしまって、250個のクォータを圧迫するそうです。

FeatureMaximum limit
Number of teams a user can createSubject to a 250 object limit
https://docs.microsoft.com/en-us/microsoftteams/limits-specifications-teams#teams-and-channels

そこでこの残骸を削除するコマンドはこちら。

Install-Module AzureAD
Connect-AzureAD
Get-AzureADMSDeletedGroup | % { Remove-AzureADMSDeletedDirectoryObject -Id $_.Id }

カテゴリー
Ubuntu

microk8sでダッシュボードを表示させる

microk8sでダッシュボード機能を有効化する

microk8s.enable dashboard

ダッシュボードに外部からの通信を転送(port-forward)するコマンドを実行する。

このときに、--address 0.0.0.0を指定して、他のマシンからもアクセス出来るようにして、コマンドの最後に & を付けてバックグラウンドで実行させておく。

microk8s.kubectl port-forward --address 0.0.0.0 -n kube-system service/kubernetes-dashboard 10443:443 &

ログイン用のトークン文字列を取得する。

token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
microk8s.kubectl -n kube-system describe secret $token

ウェブブラウザからアクセスする

microk8sを実行しているマシンに対して、ウェブブラウザから https://IPアドレス:ポート番号 でアクセスするとログイン画面が出てくる。
(プロトコルはhttps、ポート番号はport-forwardで指定した10443番などの数字)

トークン文字列はかなり長いので途切れないように気を付けてコピペする。

ログイン出来たらKubernetesの画面が表示される。