問題 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サービスでスケジュール更新を設定し、データの更新を自動化できます。