ラベル Power Query(パワークエリ) の投稿を表示しています。 すべての投稿を表示
ラベル Power Query(パワークエリ) の投稿を表示しています。 すべての投稿を表示

2026年6月7日日曜日

2026年6月時点のAIについて

業務でAIの助けを借りることがあります。例えば、Power QueryやDAXメジャーについて質問するとスクリプトを作ってくれます。しかし、複雑なことをしようとした場合、AIが作ったスクリプトはうまく動かないことが多く、そのスクリプトの不具合について何回か質問を繰り返すと、最初にAIが作ったスクリプトに戻ってしまい、解決しないことが多いです。

また、エラーの調査に使った場合、原因となる可能性を提示してくれますが、原因の特定はしてくれません。最終的には、自分で原因を見つける必要があります。

また、自分で作ったスクリプトを渡して「これをもう少し早くしたい」と質問すると、AIがスクリプトを直してくれますが、かえって遅くなったりします。

そんなわけで、現時点では私は以下のように使っています。

  • Lint的に使う
    AIにスクリプトを読ませると、ケアレスミスを確実に発見してくれます。Power QueryやDAXにはLintがないので助かっています。
  • 全体を作ってから細部について質問する
    割と的確な回答が返ってきます。個別最適みたいなところは得意です。
  • こういうときってどうするの?と聞いてみる
    定石のようなことはよく知っているので、アイディアとして採用できるものがあります。

2023年8月13日日曜日

Excel パワーピボット(鷹尾祥著、翔泳社)


BIツールの基礎を学べます。Power QueryとPower Pivotをバランスよく扱っています。内容は以下のとおりです。なお、楽天にもあります。

第1部 理論編
  1. Excelの常識を買えるモダンExcelの登場
    • 著者が「モダンExcel」と言っているのは「BIツール」と同じ意味です。本書が出版された時期にはまだBIツールは一般的ではありませんでした。
  2. モダンExcelによる全自動レポートの仕組み
    • Power QueryとPower Pivotを使った集計の概要を説明しています。
第2部 実践編
  1. 実践にあたって
  2. まずは基本の星型モデルで7つのステップをマスター
    • Power QueryとPower Pivotを使った集計の作り方を説明しています。最終的にレポートを作成します。また、カレンダーの作り方と使い方を説明しています。カレンダーは集計に必須です。
  3. 商品別収益性分析
    • 2で作ったレポートに、商品ごとの利益を追加します。クエリのマージを実習します。
  4. 商品カテゴリー・商品別の売り上げ割合
    • Power Pivot(DAX言語)を使ったメジャー(集計用の数式)の作り方と、リレーションシップについて説明しています。
  5. 当期累計売上
    • 累計の作り方を説明しています。Power Pivot(DAX言語)での累計の作り方は画期的にシンプルです。
  6. 売上前年比較
    • DAX言語を使った前年比較の作り方を説明しています。
  7. 予算vs実績比較
    • フォルダーからのファイルの取り込みを説明しています。また、ピボット解除について説明しています。ピボット解除は集計に必須の処理です。
  8. ダッシュボード
    • 前章までで作ったデータをグラフ化します。おまけ的な章です。
Excelのパワークエリとパワーピボットの考え方は、Power BIやQlik Senseなどの他のBIツールと同じです。ExcelでBIツールのスキルを身に着けることができます。

2023年7月23日日曜日

「クエリが実行されなかったか、データモデルにアクセスできませんでした」の解消方法

Excelで、Power Queryの更新中にこのメッセージが出ました。メッセージ全文は以下のとおりです。

「クエリが実行されなかったか、データモデルにアクセスできませんでした。エラーメッセージは次のとおりです: '2021/06/30'文字列はdate型に変換できません」

これは、ピボットテーブルのエラーです。Power Queryのエラーではありません。Power Pivotのエラーでもありません。以下の手順で解消しました。

  1. フィールドのデータ型を正しくする(上記の場合はdate型にする)。
  2. 上記フィールドを使っているピボットテーブルのフィルターをいったん削除してから再設定する。

エラーの原因は、フィルターに使っているフィールドのデータ型が未定義となって文字列扱いとなり、そのフィルターと、フィルターで絞り込まれるフィールドのデータ型とが不一致になっていることです。

私の場合、Combineでフィールド名を間違えて元々date型だったフィールドのデータ型が未定義(文字列扱い)となり、そのフィールドを使ったピボットテーブルのフィルターでこのエラーが発生しました。

このエラーを解消するのに2日かかりました。特に上記の2がわかるまでに時間がかかりました。

なお、私はこの本でパワークエリの基本を学びました。Amazonにもあります。

2023年2月19日日曜日

Qlik Senseユーザーのためのデータ分析実践バイブル

、

Qlik Senseの使い方を書いた唯一の日本語の書籍です(2023年2月時点)。この本の付属データをダウンロードして、フリートライアルライセンスで実習すればとりあえず使えるようになります。アマゾンにも楽天にもあります。アマゾンの詳細はこちら、楽天はこちらです。章立ては以下のとおりです。
  1. Qlik Senseの概要
    • Qlik Senseのコンセプトや考え方を説明しています。
  2. Qlik Senseを試してみよう
    • 基本的な使い方の説明です。
  3. 基本的なビジュアライゼーションの作成
    • Qlik Senseで使えるチャート(グラフ)の説明です。
  4. より便利なビジュアライゼーションの使い方
    • 累積や移動平均などのやり方を説明しています。
  5. アプリへのデータの追加
    • データマネージャーとロードスクリプトの使い方を説明しています。
  6. データ準備とモデリングの基礎
    • データマネージャーの使い方について説明しています。
  7. 高度な分析を行うための関数
    • Qlik Senseが用意している関数の説明です。SET分析(Power PivotのCALCULATEとFilterに相当する機能)についても説明しています。
  8. ロードスクリプトによるデータ変換
    • ロードスクリプトの使い方の応用編です。
  9. 販売データ分析での実践
    • ABC分析について説明しています。
  10. 人事データ分析での実践
    • データアイランドについて説明しています。
Qlik Senseは、Power BIに似たBIツールです。できることはほぼ同じで、使い方が異なります。Power BIと比べた感想は以下のとおりです。
  • Power Queryに相当する部分(ロードスクリプト)の使い方が難しい。
    • 私は、Power Queryで加工したものを取り込んでいます。
  • 直接取り込みのアップロードで一度に取り込めるファイルサイズの最大が50MB。
    • 50MB超のファイルは分割してからアップロードしなければなりません。
  • 直接取り込みの最大容量は200MB
    • ローカルファイルからのアップロードは合計で200MBまでです。200MBを超える場合はAWSのS3などにアップロードしたデータに接続する必要があります。
  • メジャーは「マスターメジャー」に登録する。
    • メジャーから他のメジャーを呼び出す場合は、「マスターメジャー」に登録すればできます。ただし、ロードし直すと、登録したメジャーを修正しなければならないことがあります。
  • リレーションがしにくい
    • Power BIやExcelと同じようにリレーションしようとすると循環参照になる場合があり、テーブル構成を変更しなければならないことがあります。
  • 情報が少ない。
    • Power BIに比べて本やネット上の情報が圧倒的に少ないので、行き詰ったときに解決するまでに時間がかかります。
なお、UdemyにQlik Senseの講座(日本語に翻訳されたもの)があります。わかりやすくて役に立ちます。

2022年11月13日日曜日

Power Queryのtryを使った例

Power QueryのtryはExcel関数のIFERRORとほぼ同じ働きをします。ただし、0の割り算を捕捉できません。
カスタム関数内でtryを使った例をご紹介します。
以下の例では、#date関数がエラーになった場合、currentmonthに0を返します。
tryを使わない場合、このカスタム関数はErrorを返します。
---
(yyyy, mm, dd) => 
let
    currentmonth = try #date(yyyy, mm, dd) otherwise 0, 
    DaysOfMonth = 
        if currentmonth = 0 then 
            0
        else
            Date.AddDays(Date.EndOfMonth(currentmonth),1) - currentmonth
in
    DaysOfMonth

なお、私はこの本でパワークエリの基本を学びました。Amazonにもあります。

2022年10月23日日曜日

[Expression.Error] 列挙内に十分な要素がなかったため、操作を完了できませんでした。の原因

Power Queryで「列のピボット」の実行中に、行の重複が発生した場合(同一の行が複数存在する場合)に以下のエラーになります。

"[Expression.Error] 列挙内に十分な要素がなかったため、操作を完了できませんでした。"

私の場合は、同じ内容のファイルを別の名前で2回読み込んでしまったときにこのエラーになりました。

なお、私はこの本でパワークエリの基本を学びました。Amazonにもあります。

2022年9月4日日曜日

Power Queryの"NaN"は0で割る割り算で発生します

Power QueryのNaNは0で割る割り算で発生します。

また、NaNが含まれる列はPower Pivotで集計できないので、0などに置き換えなければなりません。

0で割る割り算はtryで引っ掛けることができないので、0で割るリスクがある場合は、条件判定で0かどうか確認する必要があります。私は以下のようにしました。

= Table.AddColumn(#"クエリの前の行", "新しい列", each if [0かもしれない列] = 0 then 0 else try ([列1]/[0かもしれない列]) otherwise 0) ...

なお、私はこの本でパワークエリの基本を学びました。Amazonにもあります。

2022年7月31日日曜日

Power Queryの列がnullの場合、文字列比較がErrorになります

Power Queryの列を条件判定で文字列比較をする場合、判定対象の列がnullだとエラーになることがあります。

以下の条件判定で[列名]=nullの場合、[追加列]に"Error"が入ります。
---
追加された条件列 = Table.AddColumn(前の行の処理名, "追加列",
each if [列名] = "AAA" then
    "AAA"
else
    "BBB"),
---

上記の場合、条件判定を追加してnullを取り除き、その後の条件判定にnullが届かないようにすれば、[追加列]はErrorになりません。
---
追加された条件列 = Table.AddColumn(前の行の処理名, "追加列",
each if [列名] = null then
    "その他"
else if [列名] = "AAA" then
    "AAA"
else
    "BBB"),
---

なお、私はこの本でパワークエリの基本を学びました。Amazonにもあります。

2022年7月10日日曜日

Power Queryのカスタム関数内で列名を使うとエラーになります

Power Queryのカスタム関数で列を参照する場合は引数で渡す必要があります。関数内で列名を参照しようとするとエラーになります。

以下はエラーになります。
=>
let
    result = [列名] * 10
in
    result

エラーを回避するためには、引数で値を受け取るように関数を変更します。
(param)=>
let
    result = param * 10
in
    result

上記の関数を以下のように呼び出します。
=fnCustom([列名])

おそらく、カスタム関数は、処理対象になっている行を認識しないのでしょう。

なお、私はこの本でパワークエリの基本を学びました。Amazonにもあります。