Power Query へそのゴマ　100本ノック　解答　１

**1. コード補完問題**  
**問題**: "Sales"列が100以上の行のみ抽出するコード  
```m
let
    Source = Data,
    Filtered = Table.SelectRows(Source, each [Sales] >= ___),
    Result = Filtered
in
    Result
```

**解答**: `100`

**解説**:  
Table.SelectRows関数の条件式で `[Sales] >= 100` とすることで、"Sales"列が100以上の行のみ抽出します。

------------------------------------------------------------
**2. 5択問題**  
**問題**: 列名を変更するための関数はどれか？  
```m
Table.________(Table.FromRecords({[OldName="A", Value=1]}), {{"OldName","NewName"}})
```
A. Table.TransformColumns  
B. Table.PromoteHeaders  
C. Table.RenameColumns  
D. Table.SelectColumns  
E. Table.AddColumn

**解答**: C. Table.RenameColumns

**解説**:  
Table.RenameColumnsは指定した列名を別の列名へと変更します。他の選択肢は列型変換や列削除など目的が異なります。

------------------------------------------------------------
**3. コード補完問題**  
**問題**: "Category"列が"Food"の行を抽出  
```m
let
    Source = Data,
    Filtered = Table.SelectRows(Source, each [Category] = "___"),
    Result = Filtered
in
    Result
```

**解答**: `"Food"`

**解説**:  
`[Category] = "Food"` で "Category" 列が "Food" の行のみ取得できます。

------------------------------------------------------------
**4. 5択問題**  
**問題**: `Table.AddColumn`関数の引数の正しい順序  
A. (table as table, newColumnName as text, columnGenerator as function) as table  
B. (newColumnName as text, table as table, columnGenerator as function) as table  
C. (table as table, columnGenerator as function, newColumnName as text) as table  
D. (columnGenerator as function, table as table, newColumnName as text) as table  
E. (table as table, newColumnName as text, columnGenerator as text) as table

**解答**: A. (table as table, newColumnName as text, columnGenerator as function) as table

**解説**:  
`Table.AddColumn(table, columnName, function)`の形式が正しい。  

------------------------------------------------------------
**5. コード補完問題**  
**問題**: "Price"列を2倍する"DoublePrice"列追加  
```m
let
    Source = Data,
    Added = Table.AddColumn(Source, "DoublePrice", each [Price] * ___),
    Result = Added
in
    Result
```

**解答**: `2`

**解説**:  
[Price] * 2 で "Price"列の2倍を計算します。

------------------------------------------------------------
**6. 5択問題**  
**問題**: `Table.ColumnNames`関数は何を返すか？  
A. テーブル内の行数  
B. テーブル内の列数  
C. テーブル内の列名のリスト  
D. テーブル内の列型のリスト  
E. テーブル全体を再計算した結果

**解答**: C. テーブル内の列名のリスト

**解説**:  
`Table.ColumnNames(table)`は、指定したテーブルの列名をリストで返します。

------------------------------------------------------------
**7. コード補完問題**  
**問題**: 日付列から年を取得するDate関数  
```m
AddedYear = Table.AddColumn(Source, "Year", each ___([Date]))
```

**解答**: `Date.Year`

**解説**:  
`Date.Year(date)`で日付値から年部分を抽出します。

------------------------------------------------------------
**8. 5択問題**  
**問題**: テーブルをグループ化する関数はどれか？  
A. Table.TransformColumns  
B. Table.Group  
C. Table.Sort  
D. Table.SelectRows  
E. Table.Unpivot

**解答**: B. Table.Group

**解説**:  
Table.Groupは指定した列でグループ化集計を行う関数です。

------------------------------------------------------------
**9. コード補完問題**  
**問題**: "Amount"列の合計を取得するコード  
```m
SumAmount = List.Sum(Table.Column(Source, "Amount")),
Result = ___
```

**解答**: `SumAmount`

**解説**:  
List.Sumで列の合計値を取得し、それをResultとして返すために `Result = SumAmount` とします。

------------------------------------------------------------
**10. 5択問題**  
**問題**: `Table.PromoteHeaders`関数の役割は？  
A. テーブルの最初の列をヘッダーにする  
B. テーブルの最初の行をヘッダーにする  
C. すべての列名を大文字にする  
D. 列名を指定した列に変更する  
E. テーブルをピボット変換する

**解答**: B. テーブルの最初の行をヘッダーにする

**解説**:  
`Table.PromoteHeaders`は一行目のデータを列見出しとして昇格させます。