MariaDBにWrite Backする方法

Exploratoryでデータを加工していると、作成したデータをMariaDBに書き戻したいことがあります。

そこで、このノートでは、ExploratoryのカスタムRスクリプト機能を使って、Exploratoryで加工したデータをMariaDBに書き込む方法を紹介いたします。

カスタムR関数を作成する

Exploratoryのカスタムスクリプト機能を使うと、自分で定義したRの関数をデータラングリングのステップとして組み込むことができます。

MariaDBへの接続情報や書き込み処理をひとつの関数にまとめてスクリプトに登録しておくだけで、プロジェクト内のどのデータフレームからでも簡単に呼び出せるようになります。

また、関数はデータを書き込んだ後も同じデータフレームをそのまま返す仕組みになっているため、途中に書き込みのステップを挟んでも、後続のデータラングリングや可視化に影響を与えることなく利用できます。

まずは、MariaDBにデータを書き込む関数を登録します。

プロジェクトメニューの「スクリプト」の横にある「+」ボタンをクリックします。

スクリプトの作成ダイアログでスクリプト名を入力します。

次に、以下のスクリプトを入力してください。dbnameuserpasswordhostport の各部分を、実際にお使いのMariaDB接続情報に置き換えてください。また、関数を呼び出す際に書き込み先のテーブル名を table_name 引数で指定できるようになっています。

writebackToMariaDB <- function(df, table_name){
  # get connection
  library("DBI")
  library("RMariaDB")
  drv <- RMariaDB::MariaDB()
  conn <- DBI::dbConnect(drv, 
      dbname = "test",          # データベース名
      user = "myuser",          # ユーザー名
      password = "mypassword",  # パスワード
      host = "myhost",          # ホスト名
      port = 3306)              # MariaDBのデフォルトポート。個別にポートを変更している場合はその番号を指定
  DBI::dbWriteTable(conn, table_name, df, overwrite = TRUE)
  DBI::dbDisconnect(conn)
  # Make sure to return df at the end.
  df
}

これは指定したデータベースに接続し、受け取ったデータフレームをテーブルに書き込むR関数です。最後に同じデータフレームを返すため、この関数はデータラングリングのどのステップにでも組み込むことができます。

スクリプトを入力したら、実行ボタンをクリックします。

「スクリプトは検証され、正常に保存されました。」というメッセージが表示されれば、関数の登録は完了です。

カスタムRコマンドとして関数を呼び出す

作成した関数を呼び出すには、開いているデータフレームの、書き出したいステップに移動します。

続いて、ステップメニューの「+」メニューから「Rコマンド」を選択します。

カスタムRコマンドのダイアログが開いたら、書き込み先のテーブル名をtable_name = "テーブル名"の形式で指定して以下を実行します。

writebackToMariaDB(table_name = "sales_table")

この関数は直前のステップからデータフレームを受け取り、指定したMariaDBのテーブルに書き戻します。緑色の「実行」ボタンをクリックすると、データがデータベースに保存されます。

書き戻しを停止する方法

データフレームを開くたびや、データラングリングを更新するたびに毎回データベースへの書き込みが実行されるのは望ましくない場合があります。

そのような場合は、Write Backのステップを一時的に無効化することができます。

右側のデータラングリングステップから書き戻しのステップを選択し、「ステップを無効にする」アイコンをクリックしてください。

これにより、有効に戻すまでの間、このステップはデータラングリングの実行時に無視されます。

Export Chart Image
Output Format
PNG SVG
Background
Set background transparent
Size
Width (Pixel)
Height (Pixel)
Pixel Ratio