基本
配列内のオブジェクト形式変換
概要
このブロックは、配列内の各要素のデータ変換ができます。変換前の配列内の各要素のデータ型は問いません(厳密には決まっている)が、変換後の各要素のデータ型は必ずオブジェクトになります。変換は、配列内の要素ごとに同じパターンの変換規則を使います(変換前後で要素数は変わらない)。
以下に具体例を示します(例示はJSON形式のオブジェクトの配列)。
- 変換前:
[ { "first_name": "夏目", "last_name": "漱石", "book1": "吾輩は猫である", "book2": "坊っちゃん", "book3": "草枕" }, { "first_name": "太宰", "last_name": "治", "book1": "富嶽百景", "book2": "走れメロス", "book3": "津軽" }, { "first_name": "芥川", "last_name": "龍之介", "book1": "羅生門", "book2": "鼻", "book3": "戯作三昧" } ] - 変換後:
[ { "name": "夏目 漱石", "masterpiece": [ "吾輩は猫である", "坊っちゃん", "草枕" ], "language": "日本語" }, { "name": "太宰 治", "masterpiece": [ "富嶽百景", "走れメロス", "津軽" ], "language": "日本語" }, { "name": "芥川 龍之介", "masterpiece": [ "羅生門", "鼻", "戯作三昧" ], "language": "日本語" } ]
先頭の配列の要素を例に、どのような変換が行われたのかを具体的に示します。
このように、このブロックを使うと、複数の値を一つにまとめたり、新しい値を追加したりできます。この例では示していませんが、値を削除(変換前の値を無視)することなどもできます。
このような変換を行うには、変換後のオブジェクトの形式を変換規則として設定します。
この例の場合は、以下のとおりです。
変換後のオブジェクト形式の「キーと値のペア」を「キー・値の型・値」で指定します。
値の型は、以下の8種類から選択します。
| 型 | 説明 |
|---|---|
| String |
文字列です。変換前のオブジェクトのキーを |
| String(旧:%形式の文字列書式なし) |
文字列です。ほぼStringと同様ですが、%形式の文字列書式が使えません。 |
| Integer |
整数です。 |
| Float |
浮動小数点数です。 |
| Boolean |
真偽値です。 |
| Variable |
変数です。
|
| Object |
オブジェクトです。 |
| Array |
配列です。 |
プロパティ
| プロパティ名 | 説明 |
|---|---|
| ブロック名 |
編集パネルに配置した当該ブロックの表示名が変更できます。 ブロックリストパネル中のブロック名は変更されません。 |
| 変換前のオブジェクトの配列が格納された変数 |
変換前の配列形式のデータが格納された変数を指定します。 |
| 変換結果を格納する変数 |
変換結果を格納する変数を指定します。 |
| 変換規則 |
変換後のオブジェクトの形式を指定します。 |
| ブロックメモ | このブロックに関するメモが記載できます。このブロックの処理に影響しません。 |
使用例
ここでは、GoogleスプレッドシートのデータをBigQueryに登録する方法を例に、「配列内のオブジェクト形式変換」ブロックの使い方を説明します。
想定するGoogleスプレッドシートとBigQueryテーブルは、以下のとおりです。
| 姓 | 名前 | 年齢 | 購入製品1 | 購入製品2 | 購入製品3 |
|---|---|---|---|---|---|
| 山田 | 太郎 | 30 | ノートPC | スマートフォン | タブレット |
| 佐藤 | 花子 | 25 | イヤホン | スマートウォッチ | |
| 田中 | 一郎 | 45 | テレビ | ゲーム機 | |
| 鈴木 | 絵里 | 35 | カメラ | ||
| 伊藤 | 次郎 | 40 | ブルーレイレコーダー | スピーカー | ヘッドホン |
| name(STRING) | age(INTEGER) | purchased_products(STRING / REPEATED) |
|---|---|---|
| 山田 太郎 | 30 | ノートPC |
| スマートフォン | ||
| タブレット | ||
| 佐藤 花子 | 25 | イヤホン |
| スマートウォッチ | ||
| null | ||
| 田中 一郎 | 45 | テレビ |
| ゲーム機 | ||
| null | ||
| 鈴木 絵里 | 35 | カメラ |
| null | ||
| null | ||
| 伊藤 次郎 | 40 | ブルーレイレコーダー |
| スピーカー | ||
| ヘッドホン |
このように、データ形式が異なるリソース間でデータをやりとりする際に、「配列内のオブジェクト形式変換」ブロックを使用すると便利です。
今回は、「配列内のオブジェクト形式変換」ブロックで以下の変換が実現できれば、GoogleスプレッドシートのデータをBigQueryテーブルへ登録できます。
- フルネームの生成:Googleスプレッドシートの「姓」と「名前」を半角空白で挟んで結合。
- 年齢の転記:Googleスプレッドシートの「年齢」そのまま。
- データ構造の変換:「購入製品1」・「購入製品2」・「購入製品3」を配列にまとめる。
まず、前準備として「スプレッドシートのデータ取得」ブロックを使って、Googleスプレッドシートのデータを変数へ格納します。
| プロパティ | 値 |
|---|---|
| ファイル名 |
Googleスプレッドシートのファイル名もしくはファイルへのURL。 |
| 結果を格納する変数 |
|
次に、変数に格納されたGoogleスプレッドシートのデータを、「配列内のオブジェクト形式変換」ブロックを使って、BigQueryテーブルの形式に沿った形式に変換します。
| プロパティ | 値 | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 変換前のオブジェクトの配列が格納された変数 |
|
||||||||||||||||||
| 変換結果を格納する変数 |
|
||||||||||||||||||
| 変換規則 |
|
最後に、変換したデータを「変数からテーブルへロード」ブロックでBigQueryテーブルへ格納します。
| プロパティ | 値 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 投入データの変数 |
|
|||||||||
| 投入先のデータセット |
|
|||||||||
| 投入先のテーブル |
|
|||||||||
| スキーマ設定 |
|
完成したフローは以下のとおりです。