0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Power Query へそのゴマAdvent Calendar 2024

Day 22

Power Query へそのゴマ チャレンジ 解答

Last updated at Posted at 2024-12-30

問題 1: データ型の最適化

次のクエリは、Power QueryでExcelファイルからデータを読み込んでいます。このクエリを最適化するには、どの手順が必要ですか?

let
    Source = Excel.Workbook(File.Contents("C:\Data.xlsx")),
    Sheet = Source{[Item="SalesData", Kind="Sheet"]}[Data],
    #"Changed Type" = 
        Table.TransformColumnTypes(
            Sheet, 
            {
                {"Date", type text}, 
                {"Amount", type number}
            }
        )
in
    #"Changed Type"

A. 「Date」列のデータ型を type date に変更
B. 「Amount」列のデータ型を type text に変更
C. ファイルのサイズを小さくする
D. クエリの手順を減らす


解答: A

解説:

  • データ型はクエリのパフォーマンスと分析に影響を与える重要な要素です。
  • 「Date」列を type text に設定していると、日付データとして扱えず、日付フィルタや計算が効率的に行えません。適切なデータ型 type date に設定することで、データ分析がスムーズになります。
  • 最適化後のコード例:
    #"Changed Type" = 
        Table.TransformColumnTypes(
            Sheet, 
            {
                {"Date", type date}, 
                {"Amount", type number}
            }
        )
    

問題 2: 条件付き列の使用

次のクエリで「High」または「Low」を割り当てる新しい列を追加するには、どの操作を使用しますか?

let
    Source = Table.FromRows({
        {"John", 500},
        {"Mary", 200},
        {"Paul", 300}
    }, {"Name", "Sales"})
in
    Source

A. フィルタリング
B. 条件付き列の追加
C. 列の結合
D. 行の削除


解答: B

解説:

  • 条件付き列の追加は、列の値に基づいて動的に値を割り当てる場合に使用します。
  • この例では、「Sales」列の値が300以上の場合は「High」、それ以外は「Low」を新しい列に設定します。
  • 実装例:
    Table.AddColumn(
        Source, 
        "Category", 
        each 
            if [Sales] >= 300 
                then "High" 
                else "Low"
    )
    

問題 3: データ結合の種類

次のシナリオで適切な結合の種類を選んでください。
2つのテーブルがあります:

  • テーブルA(すべての製品IDを含む)
  • テーブルB(販売データを含む)

すべての製品と対応する販売データを表示する必要がありますが、販売データがない製品もリストに含めたいです。どの結合の種類を使用すべきですか?

A. 内部結合
B. 左外部結合
C. 右外部結合
D. フル外部結合


解答: B

解説:

  • 左外部結合は、左側のテーブル(テーブルA)のすべての行を保持し、右側のテーブル(テーブルB)の一致するデータを追加します。
  • 一致するデータがない場合、右側の列は null になります。

問題 4: フォルダデータの結合

「C:\SalesReports」フォルダ内のすべてのCSVファイルを読み込み、1つのテーブルに結合します。これを達成するために最適なデータソースの選択肢はどれですか?

A. データベース
B. フォルダ
C. Webデータソース
D. Excelファイル


解答: B

解説:

  • 「フォルダ」を選択することで、フォルダ内のすべてのファイルをPower Queryに読み込み、一括処理できます。

問題 5: エラー処理

以下のコードは、データが存在しない場合にエラーが発生します。この問題を解決するために最適なアプローチは何ですか?

let
    Source = Table.SelectRows(#"Previous Step", each [Value] > 100)
in
    Source

A. エラーを無視する
B. try...otherwise を使用する
C. フィルタ条件を変更する
D. エラーを置換する


解答: B

解説:

  • try...otherwise を使用することで、エラーが発生した場合に代替値を返す処理を実現できます。
  • 実装例:
    try 
        Table.SelectRows(
            #"Previous Step", 
            each [Value] > 100
        ) 
    otherwise 
        Table.FromRecords({})
    

問題 6: データ型の不一致エラー

2つのテーブルを結合する際、「キー列のデータ型が一致していません」というエラーが発生しました。この問題を解決する方法は?

A. データ型を一致させる
B. 列を削除する
C. テーブルをピボット化する
D. 条件付き列を追加する


解答: A

解説:

  • 結合キー列のデータ型を一致させることが必須です。例えば、片方のキーが数値型(Int64)で、もう片方が文字列型(Text)の場合はエラーが発生します。
  • 実装例:
    Table.TransformColumnTypes(
        TableA, 
        {
            {"KeyColumn", type text}
        }
    )
    

問題 7: データのピボット解除

以下のデータがあります:

Product 2022 2023
A 100 150
B 200 250

このデータを以下の形式に変換するには、どの操作を使用すべきですか?

Year Product Sales
2022 A 100
2022 B 200
2023 A 150
2023 B 250

A. 列の分割
B. ピボット解除
C. 行の削除
D. 条件付き列


解答: B

解説:

  • ピボット解除(Unpivot Columns)操作を使用すると、複数の列を行に変換できます。
  • この場合、「2022」と「2023」の列をピボット解除して、「Year」列と「Sales」列を作成します。
  • 実装例:
    let
        Source = Table.FromRows({
            {"A", 100, 150},
            {"B", 200, 250}
        }, {"Product", "2022", "2023"}),
        #"Unpivoted Columns" = 
            Table.UnpivotOtherColumns(
                Source, 
                {"Product"}, 
                "Year", 
                "Sales"
            )
    in
        #"Unpivoted Columns"
    

問題 8: 動的パラメータの使用

次のクエリで動的に変化する値を使用するには、どの手法を使用しますか?

let
    Source = Table.SelectRows(#"Previous Step", each [Category] = "A")
in
    Source

A. ハードコーディング
B. パラメータ
C. 列の結合
D. マージクエリ


解答: B

解説:

  • パラメータを設定することで、動的な値を使用できます。
  • 実装例:
    let
        ParameterValue = "A",
        Source = Table.SelectRows(#"Previous Step", each [Category] = ParameterValue)
    in
        Source
    

問題 9: クエリのステップ管理

以下のような複数ステップのクエリがありますが、特定のステップを無効にするにはどうしますか?

Step1 = Source,
Step2 = Table.RemoveColumns(Step1, {"Column1"}),
Step3 = Table.Sort(Step2, {"Column2"})

解答:
Power Queryエディターで該当ステップを右クリックし、「ステップを無効化」を選択します。


問題 10: データの更新

Power BIレポートでデータを自動更新するには、どの設定が必要ですか?

解答:
Power BIサービスでスケジュール更新を設定し、データの更新を自動化できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?