ブロックリファレンス

BLOCKS Reference

基本

配列内のオブジェクト形式変換

概要

このブロックは、配列内の各要素のデータ変換ができます。変換前の配列内の各要素のデータ型は問いません(厳密には決まっている)が、変換後の各要素のデータ型は必ずオブジェクトになります。変換は、配列内の要素ごとに同じパターンの変換規則を使います(変換前後で要素数は変わらない)。

配列内のオブジェクト形式変換ブロックの動作概略図

以下に具体例を示します(例示は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

文字列です。変換前のオブジェクトのキーを${}で囲むことで、その変換前のオブジェクトキーの値が参照できます。先の例だと、${first_name}${last_name}で、変換前オブジェクトのfirst_nameキーとlast_nameキーの値を参照しています。また、%形式の文字列書式も使えます。

String(旧:%形式の文字列書式なし)

文字列です。ほぼStringと同様ですが、%形式の文字列書式が使えません。

Integer

整数です。

Float

浮動小数点数です。

Boolean

真偽値です。truefalseを指定します。

Variable

変数です。

  • 変数が指定できます。変数に格納された値が参照されます。
  • 変換前配列の要素がオブジェクトの場合は、変換前配列のオブジェクトのキーが指定できます。オブジェクトのキー名と変数名が重複した場合は、オブジェクトのキーが優先されます。

    先の例だと、book1book2book3で、変換前オブジェクトのbook1キー・book2キー・book3キーの値を参照しています。

  • 特殊変数_rowを使うと、変換前配列の各要素が参照できます。

    変換前のデータとして、以下のような配列があったとします。

    [
      [10, 20, 30, "foo"],
      [11, 21, 31, "bar"],
      [12, 22, 33, "baz"]
    ]
    

    この場合、_row.0で要素ごとの配列の先頭の値(101112)が参照できます。

  • 変数展開も使えます。
Object

オブジェクトです。

Array

配列です。

プロパティ

プロパティ名 説明
ブロック名

編集パネルに配置した当該ブロックの表示名が変更できます。

ブロックリストパネル中のブロック名は変更されません。

変換前のオブジェクトの配列が格納された変数

変換前の配列形式のデータが格納された変数を指定します。

変換結果を格納する変数

変換結果を格納する変数を指定します。

変換規則

変換後のオブジェクトの形式を指定します。

ブロックメモ このブロックに関するメモが記載できます。このブロックの処理に影響しません。

使用例

ここでは、GoogleスプレッドシートのデータをBigQueryに登録する方法を例に、「配列内のオブジェクト形式変換」ブロックの使い方を説明します。

想定するGoogleスプレッドシートとBigQueryテーブルは、以下のとおりです。

Googleスプレッドシート:
名前 年齢 購入製品1 購入製品2 購入製品3
山田 太郎 30 ノートPC スマートフォン タブレット
佐藤 花子 25 イヤホン スマートウォッチ
田中 一郎 45 テレビ ゲーム機
鈴木 絵里 35 カメラ
伊藤 次郎 40 ブルーレイレコーダー スピーカー ヘッドホン
BigQueryテーブル(かっこ内は型及びモード):
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テーブルの形式に沿った形式に変換します。

プロパティ
変換前のオブジェクトの配列が格納された変数

_(初期値のまま)

変換結果を格納する変数

_(初期値のまま)

変換規則
name String ${姓} ${名}
age Variable 年齢
purchased_products Array
String ${購入製品1}
String ${購入製品2}
String ${購入製品3}

最後に、変換したデータを「変数からテーブルへロード」ブロックでBigQueryテーブルへ格納します。

プロパティ
投入データの変数

_(初期値のまま)

投入先のデータセット

example

投入先のテーブル

customer_purchases

スキーマ設定
name STRING NULLABLE
age INTEGER NULLABLE
purchased_products STRING REPEATED

完成したフローは以下のとおりです。

この情報は役に立ちましたか?