しばらく山とランは遠のいています

仕事、そしてコロナの関係でしばらく山やランからは遠ざかっています。来年の春から復帰できるようそろそろ運動再開していきたいと思います。ちなみに今、BIツールのPower BIが半分趣味になって、完全な運動不足になっています。20201020
ラベル PowerBI の投稿を表示しています。 すべての投稿を表示
ラベル PowerBI の投稿を表示しています。 すべての投稿を表示

2023年2月26日日曜日

話題のChatGPTで遊んでみました

話題のChatGPTで遊んでいます。すごいわプログラムのサンプルコードを探してきてくれます。
自分のことをいろいろ検索してみましたが、会社名とかいれてかなり絞り込んだのですが、いろいろ話を作ってくるので結構問題ありますね。でも、技術的な相談をする相手にはいいかもしれません。暇なときに遊びます。

2023年2月23日木曜日

祝日もホテルでPower BIと格闘

金曜日に予定が入ったので祝日もそのまま東京居残りです。
以前だったら、近くの岩場に遊びに行くところですが、さすがに今はその気力もなく、ホテルに籠ってPower BIと格闘中です。このホテルの回線速度はまだましですが、ほんと遅いホテルが多いです。自宅で処理する時間から比べると数倍遅いです。追加料金出すので速い回線がほしいですね。


2023年1月26日木曜日

【Power BI】散布図の基になりそうなオープンソース見つけました

Power BIのカスタムビジュアルを作る機会が増えました。
散布図の元になるオープンソースを見つけました。以前からあったようですが、気が付きませんでした。これ最近も更新されているので、なかなか使えそうですね。
Power BIは、グラフの種類が他社製品と比べると少ないので、いろいろカスタマイズニーズが出てきます。まだまだ試行錯誤ですが。

Enhanced Scatter(拡張散布図)
https://appsource.microsoft.com/ja-jp/product/power-bi-visuals/WA104380762?exp=ubp8&tab=Overview
https://github.com/microsoft/powerbi-visuals-enhancedscatter


2022年11月15日火曜日

【Power BI】リレーションシップの編集が便利になりました

Power BIの最近のバージョンアップでとっても便利な機能が追加されています。
下図のモデルビューでリレーションの線を選択すると右のプロパティペインにリレーションの設定画面が現れます。これまで設定画面をダイアログで開いていたのですが、手数は減り、処理スピードも速くなって、大量のテーブルを扱うことの多いわたしはとても重宝しています。まだプレビュー機能なので、オプションでrelationship paneをチェックしてください。

https://learn.microsoft.com/ja-jp/power-bi/transform-model/desktop-create-and-manage-relationships#edit-a-relationship

2022年11月14日月曜日

【Power BI】ドリルスルーで詳細シートに遷移

Power BIのドリルスルー機能を便利に使っています。
この機能は何年も前からありますが、なかなか設定を覚えることができず、毎回いろいろ試して動かしています。
ドリルスルーは、ビジュアルにある人の名前や物の名前をマウスのポインターをもっていって、右クリックしてその人や物の個別の詳細シートに遷移する機能です。遷移するときに自動的にクリックした人や物だけにフィルタされて遷移します。

この機能の設定で分かりにくいところは、この設定は、遷移されフィルタされるシート側に設定するところです。ついつい、右クリックをする遷移を操作する画面に設定すると思い込んであれこれ触ってしまいます。受け側のシートに設定するのがポイントです。
遷移されるシートの右のペインに、このシートで使っているデータフィールドをドロップすると、他の関係するシートでの右クリックにドリルスルーのメニューが現れます。

 

2022年11月13日日曜日

【Power BI】テーブルの行の並び替えで注意することがあります。

 Power BIで視覚化する際にアイテムの順番を設定したい場合が多くあります。、以下の列ツールの「列で並べ替え」がとっても重宝します。しかし一つ注意することがあります。
ここで、順番を定義したいアイテム列を、順序を示す別のインデックス列で定義した場合、対象とする列をビジュアルにセットするとインデックス列とともにコンテキスト列にセットされているようです。そのため、ALLSELECTEDなどのフィルタ定義をする場合、このインデックス列もフィルタの対象にして考える必要があります。普通にフィルタを外したい列をALLSELECTEDで設定しているのにどうしてもフィルタが外れず、いろいろ試したあげく、順序を定義するインデックス列もALLSELECTEDに含めて、やっと想定している動きになりました。時間かかりました。


2022年11月8日火曜日

【Power BI】Power BIサービス上でデータ更新をする際の制限事項 動的データソース

Power BIサービスにPower BI デスクトップで作成したレポートを発行して、Power BIサービス上で定期的にソースデータの更新を行うという運用がよくあります。


ただし、この時に以下の制限事項があります。

動的データソースと言われる状態にクエリ式を記述すると、Power BI デスクトップでデータ更新できても、Power BIサービスではデータの更新は出来なくなります。
動的データソースとは、パラメータの変更、条件分岐などでソースデータの保存先の種類を切りかえる書き方をしているときです。わたしの場合、Sharepointとローカルフォルダのいずれにソースデータを置いてもどちらからも読み込めるようにパラメータで切り替えるように作ることが多いです。この状態でPowwer BI サービスにレポートを発行すると表示はされますが、データ更新は出来ないです。解決方法は、コードレベルで、ソースデータの置き場所はいずれか一つの保管先に絞り固定的なコードにしないといけないです。いろいろ問い合わせたのですが現状この制限はなくなっていません。

更新と動的データ ソース
https://learn.microsoft.com/ja-jp/power-bi/connect-data/refresh-data#refresh-and-dynamic-data-sources



2022年10月19日水曜日

【Power BI】スモール マルチプル 小さなグラフをまとめて表示

Power BI では、小さなグラフを表やマトリックスビジュアルにはめ込むというスパークラインとは別に、小さなグラフを並べる機能があります。スモール マルチプルと呼ばれる機能です。
この機能は、グラフの書式をいろいろ設定できます。ただし、グラフの並びは、ユーザがいろいろコントロールすることはできません。加えてあまり多くのグラフは表示できないです。

【Power BI】スパークライン 表の中にグラフ表示

Power BIでも表やマトリックスビジュアルのセルに、小さなグラフ(スパークライン)が表示できるようになったのを知りました。
これいいですね。もう少しグラフの表現がいろいろ設定できたらうれしいのですが。

https://learn.microsoft.com/ja-jp/power-bi/create-reports/power-bi-sparklines-tables

2022年10月3日月曜日

【Power BI】Covid-19の感染者の全数把握簡略化に伴い変更

 今まで、CoviD-19 の都道府県別感染者統計は、NHKのデータを利用していましたが、感染者の全数把握簡略化に伴い、NHKが感染者の都道府県別集計を取りやめたため、厚生労働省だけのデータを更新するようにしました。
重傷者、死亡者のみが更新されます。死亡者累積のトップは大阪が堅持しています、どうしてこうなっているか、大阪府民はしっかり検証しないといけないですね。必ず原因があり、これは解決しないといけない重要課題です。

2022年9月6日火曜日

【Power BI】COVID-19 重傷者は京都が今回は悪いですね、大阪は相変わらず

明日から日本入国の水際対策が緩和されたとか。でもよくわからないですね。ワクチン3回目打っていないと相変わらず自宅待機が必用。ほとんど予防効果ないのにそれがどんな意味があるのかよくわかりません。
Power BIでCOVID-19の推移を見ていますが、感染者数はピークアウト、でも重傷者数はまだまだです。今回は京都が悪いですね。大阪は相変わらず。京都は観光客を大量に受け入れたからでしょうか。いずれにしてもベトナムのように検査はいつでもすぐに受けれるようにしてほしいですね。

2022年8月15日月曜日

【Power BI】KEEPFILTERS使いこなせますか

 Power BIを使っていくと、フィルタ関数を使いこなすが求められてきます。
以前から、このKEEPFILTERSという関数の説明を読んでも、これはいったい何をするものかわかりませんでした。

この解説がよくわかります。
Using KEEPFILTERS in DAX
https://www.sqlbi.com/articles/using-keepfilters-in-dax/

DAXは設定したコンテキスト(テーブル)内を上の行から順番に計算して、各行に計算値をあてはまていきます。この時の1行を順番に選択していく行フィルタは、CALCULATE関数の中に設定するフィルタ条件でクリアされて計算されますが、KEEPFILTERS関数は、この行フィルタをクリアしません。そうなると具体的にどんなことが起こるのかですか。

これが以下のテーブルビジュアルに表した結果です。なるほど、、、、

2022年7月12日火曜日

【Power BI】一つのDAX式内に中間テーブルを作るときのコツ

ずっと悩んでいたことがあります。
Power BIで、DAX式を書くときに、Var関数を使ってDAX式をステップに細かく分けて記述する方法はとても便利で愛用しています。これを利用して一つのDAX式内で中間テーブルを作って段階的に処理をして計算するととても分かりやすいのですが、どうも思うように中間テーブルの列指定ができませんでした。

具体的には以下です。

論文指標_合計3 =
Var TempTable = SUMMARIZE('論文リスト'[論文指標],"最大値",MAX('論文リスト'[論文指標]))
return CALCULATE(SUM('TempTable'[最大値]),ALLSELECTED('TempTable'[論文]))
/*  変数で設定した論文に列指定をする方法がなく、エラーになる */

メジャー内で一時的に宣言した変数(中間テーブル)の生成後に、それに対するフィルターやコンテキストを反映させることについては、現状制限があるということがわかりました。コンテキストを認識できず列を指定できないそうです。

これを回避するには、中間テーブルを作成する段階で、列を指定して必要なフィルタをかけてしまい、次に続く式ではフィルタをかけないことだそうです。

論文指標_合計_valid_Allselected =
Var TempTable = SUMMARIZE(ALLSELECTED('論文リスト'[論文]),"最大値",MAX('論文リスト'[論文指標]))
return MAXX(TempTable,[最大値])

これ解決するのにとても時間がかかりました。

2022年3月30日水曜日

【Power BI】BRAVOというPower BI Desktop用のプラグインツールがとっても便利

QiitaでSutoさんが紹介していたこのBravoというツールがとても便利です。
https://qiita.com/hanaseleb/items/d32f535ff112cf457bba?fbclid=IwAR06VwCPzdWPvyc3jpH7TKBZO7qipbT5N0VUxAX-GsZLCFHDwpQXo5EqHqs

BRABOダウンロードサイト  https://bravo.bi/

わたしが便利さを感じる場面は、大きなCSVをエクスポートしたい場合です。Power BIやExcel上でのデータセットからのエクスポートはサイズに限界があるので、このツールは役立ちします。実際に1000万以上のデータで試しましたがダウンロードできました。

DAXのコードを整形してくれる機能があるのですが、これは二度目にエラーが出ました。まだプレビューバージョンなので、これもご愛敬かな。

2022年3月22日火曜日

【Power BI】円グラフ等で、「その他」を表示させる方法

 現在のPower BIでは残念ながら、上位Nのアイテムをグラフに表示させるフィルターは存在していますが、下位のアイテムをその他にまとめて表示する機能はありません。円グラフ等の割合を示すグラフではしばしばこのその他を表示させたくなります。


円グラフなどのビジュアルパーツにはその機能がないのですが、それを乗り越える方法があることを教えてもらいました。とっても面倒で、かなりの時間がかかりますが、どうしても必要な時は、以下の手順で円グラフにその他を表示させることが出来ます。一日もはやく、割合を示す円グラフや積み上げのグラフはこの機能を標準的に備えてほしいです。

0)「その他」を表示しないもともとある数値計算メジャー
_CiteScore平均_重複排除 = AVERAGEX(ALLSELECTED('MFRD_Article'[RDID-U]),[_CiteScore_重複排除])

1)「その他」を表示するためのテーブルを作成する
作成するテーブルは「その他」を加えるために新たに作成するものです。
元々あるテーブルとリレーションを張ります。その方向は単方向にして余分なフィルタがかかり、「その他」が消えないようにする。
CiteScoreMetrix_ASJCコード_親_その他表示用 = 
 UNION ( ALLNOBLANKROW ('CiteScoreMetrix_ASJCコード_親'[Description]),  { "その他" })

2)TopNの指定をするテーブルを作成する
追加するテーブルは、特別に他のテーブルとリレーション関係を持たせないようにする。複数のグラフで共通で利用することも可能。
その他表示用TopN = GENERATESERIES(2, 50, 1) 

さらに以下のメージャーをスライサ選択用に作成します。
_TopN値 = SELECTEDVALUE('その他表示用TopN'[TopN], 10)

3)「その他」がない場合のアイテム順位を設定するメジャーを作成する
_CiteScore平均順位_重複排除 = RANKX(ALLSELECTED('CiteScoreMetrix_ASJCコード_親'[Description]),[_CiteScore平均_重複排除],,,Skip)

4)「その他」がある場合のアイテム順位を設定するメジャーを作成する
_CiteScore平均順位_重複排除_その他表示 = 
    var VAL1=CALCULATE([_CiteScore平均_重複排除],ALLSELECTED('MFRD_Article'[RDID-U]))
    var VAL_RankOthers=
     RANKX(ALLSELECTED('CiteScoreMetrix_ASJCコード_親_その他表示用'[Description]),
                CALCULATE([_CiteScore平均_重複排除],ALLSELECTED('MFRD_Article'[RDID-U])),,,Skip)
    return
         IF(ISINSCOPE('CiteScoreMetrix_ASJCコード_親_その他表示用'[Description]),
         IF(SELECTEDVALUE('CiteScoreMetrix_ASJCコード_親_その他表示用'[Description])="その他",
                        'その他表示用TopN'[_TopN値]+1,
                         IF(VAL1>0,
                            IF(VAL_RankOthers>'その他表示用TopN'[_TopN値],
                                'その他表示用TopN'[_TopN値]+1,VAL_RankOthers)
                         ,BLANK())),
                         VAL1)

5)その他を表示する数値計算を行う
_CiteScore平均_重複排除_その他表示 = 
    var VAL_NoOthers=AVERAGEX(ALLSELECTED('MFRD_Article'[RDID-U]),[_CiteScore_重複排除])               return
        IF(ISINSCOPE('CiteScoreMetrix_ASJCコード_親_その他表示用'[Description]),
            var VAL1=IF([_CiteScore平均順位_重複排除_その他表示]>'その他表示用TopN'[_TopN値],
                           BLANK(),[_CiteScore平均_重複排除])
            var Table_Temp=ADDCOLUMNS(
                           ALLSELECTED('CiteScoreMetrix_ASJCコード_親_その他表示用'),
                                                 "Temp_VAL",
                                                  [_CiteScore平均_重複排除])
            var VAL_TopNTotal=SUMX(TOPN('その他表示用TopN'[_TopN値],  Table_Temp,[Temp_VAL]),                                                              [Temp_VAL])
            var VAL_ALLTotal=SUMX(Table_Temp,[Temp_VAL])
            return
                IF(SELECTEDVALUE('CiteScoreMetrix_ASJCコード_親_その他表示用'[Description])="その他",
                      VAL_ALLTotal-VAL_TopNTotal , VAL1)
         ,VAL_NoOthers)

2022年3月12日土曜日

【Power BI】テーマ設定、デザインの統一

 Power BIを実際に仕事に使っていくと、どうしてもたくさんのグラフの設定をしなければならないケースが出てきます。これ気まぐれで設定していくとフォントサイズなどばらばらになってしまい、最後に再度設定しなおすなど、このビジュアルの設定を操作している時間がかなりかかります。そこで活躍するのが、Power Pointにもあるテーマ設定機能です。設定の各種デフォルト値の設定、カラーパレット、背景の設定などができます。

ただ、まだたいへんですね、画面からデフォルト値を設定できるのはごくわずかです。PowerPointのように自分で設定したないようを既定値に登録するような機能はまだなく、コツコツでJSON形式の設定ファイルを作っていくことになります。でも一度作ってしまえば、しばらくは使えると思うので、デザインの統一、作業の効率化に貢献すると思います。

2022年3月11日金曜日

【Power BI】日本人が好きなレーダーチャート

 日本人は、このレーダーチャートが好きですね。
で、Power BIにもこのレーダーチャートが存在しますが、機能がとってもプアーなんです。だからまともに仕事で使おうとするといくつも課題があり、時間もかかります。

大きな課題として、
①各軸のスケールを固定にできません。わたしの場合は、最大値あるいは平均値の割合を計算して使っています。とっても面倒です。

②値がないと軸が消えます。下記の図では7軸ですが、この軸を固定にできず、値がないと消えてします。nullだと消えるので、ゼロをデータの中に必ずいれればいいのですが、これがなかなかの手間がかかります。

最近、このレーダーチャートをどうしてもしたいと言われるユーザが現れたので、再度いろいろ試してみました。それで、以下の図の灰色の7角形の図を見てください。これは基準値で、基準値を持つ(平均値とか最大値)をテーブルを作って本来のテーブルとリレーションを張ります。これを表示しておけば、軸もなくならず、基準値とも比較できます。

いずれ時間ができたら、このレーダーチャートのビジュアルはオープンソースなので改造してやろうと思っています。軸のスケールを固定にする機能は絶対にほしいです。

なおレーダチャートは数値軸が多いため、普通の棒グラフのような短時間では作れません。軸の数分、棒グラフのビジュアルを設定する以上に時間かかると思います。ここはこのグラフを要望される方によく説明した方がいいです。


2022年3月10日木曜日

【Power BI】ソースデータの更新日を取得する方法

 Power BIは、一度レポートを作ってしまえば、あとはソースデータを何度でも更新できのがとても便利です。ただ、このデータ更新日をデータとして取り込む機能が現在はありません。そのため、以下のようなクエリをちょこんと追加しておくという方法がよく使われます。Power BIでデータを更新するとクエリが一斉に動くので、その時間を記録してデータとして保存するしくみです。


このコードはよく注意して記述ください
時間を取得する相手がPower BIデスクトップの場合は、自分のPCですが、Power BI サービスにアップロードするとそのサーバから時間を取得します。この時間はUTCとなります。上記コードでは、PBIデスクトップでもPower BIサービスでも日本時間を表示するように、時間取得を必ずUTCで取得できる関数にして、日本時間に変換しています。

まあ、いずれにしてもデータ更新時間はこんな細工しなくても自動的に取得して記録に残す機能を備えてほしいですね。

2022年3月9日水曜日

【Power BI】レポートの目次及びリンクが簡単に作れます

これ便利です。
こんなの前からあったでしょうか。

Power BIでレポートを作っているとどんどんページが増えてきます。その目次とリンクを作りたくなります。以前はコツコツと作るしかなかったのですが、今はボタンメニューから簡単に作れます。あとはデザインだけです。


2022年3月5日土曜日

【Power BI】レポートビューでフィールドをフォルダで整理する

 いつのまにか、クエリのフィールドをフォルダで整理する機能が追加されていました。
これ便利です。ただ、まだ発展途上なのか、モデルビューでしかフォルダ管理ができません。
フィールドが膨大になってくるととっても便利なんです。