オンプレクラウド

Dr.Sum

Dr.SumDr.Sum Connect

Dr.Sum ConnectからDr.Sumへデータを書き込む方法として、全部で4つのコンポーネントが用意されています。

実際に使う際はどれを使えばよいのか?と迷ってしまうこともあります。これら各コンポーネントについて裏側の動きを踏まえたパフォーマンス面から利用シーンまでわかるとよいですね。

本記事では、4つ目<書き込み(DataLoader)>についてがっつりログを追いかけて徹底解剖していきます!

まず結論:こんな場面で使うのがベスト

DataLoaderのライセンスがあり、UPSERT処理を行いたいときはこちらを使いましょう!

もしDataLoaderのライセンスがあり、仮想テーブルを使ってUPSERT処理をしたい場合は、「書き込み(VTB)」のコンポーネントから「キーが重複したらアップデート」が可能なのでそちらを使いましょう。

サンプルスクリプト及びデータ

CSVファイルは下記のように3行のみとしています。

pkcol,c1,c2
1,"v11","v12"
2,"v21","v22"
3,"v31","v32"

 

設定画面

「dataloader_update」という名前がデフォルトで配置されます。

設定画面はシンプルで、与えられた入力データをそのままテーブルへインポートします。

DataLoaderのライセンスがないと利用できないため、「DataLoader接続テスト」ボタンから確認しましょう。

設定画面のポイントは下部にある「キーとなる列名」の部分です。こちらは選択したテーブルにNOT NULL UNIQUE制約がないとグレーアウトして設定できないのでこちらも確認しておきましょう。

ログを見てみよう!

VTBでは基本的にBulkInsertと同様インポート処理になります。そのため、IMPORTログとより詳細に処理が分かるCOMMITログを見てみます。

テーブルが空の状態からアップデートロードでインポート

IMPORTログ

ここでは、モードが3(= アップデートロード)でキーとなるカラムについての情報が出力されています。

下から2行目のログの通り、空のテーブルに対して3件挿入したためテーブル全体の件数も3件になります。

COMMITログ

BulkInsertと似たログですが、「DBM_BUILD_TABLE_UPDATE_LOADER」や「UpdateLoad ***」とある通り、専用の処理が実行されています。

CRXやCRSというキーワードが出ています。これは列指向であるDr.Sum特有のデータの持ち方で、CRXとDAT(CRX)という2つのファイルに対する処理が行われていることを意味しています。

1.2.2. テーブルの物理構造

詳細は割愛しますが、Dr.Sumが得意な列方向での処理によって高速に挿入・更新されています。

さらに別のCSVをアップデートロードでインポート

アップデートロード機能は、テーブルにデータがあれば更新・なければ追加する機能です。データ件数が3件のテーブルに対して、以下のCSVをインポートした場合のログも見てみます。

pkcol,c1,c2
1,"v11","v12"
2,"v21","v22"
3,"v31","33333"
4,"v41","v42"
5,"v11","v12"

IMPORTログ

挿入する行がpkcol = 4, 5の2行分あると表示され、全体として5件というように表示されますね。

COMMITログ

「CRX …」と出ているログに注目すると、pkcolについてはnode count = 5に、c1とc2についてはnode count = 4になっています。

CRXとは下記の画像の通り、「北海道」や「青森」といった値のバリエーションを重複なく保持しているファイルです。

この値のバリエーションの数のことをカージナリティと呼んでいます(例えば、都道府県なら高々47)。

今回インポートした5件のCSVの値のカージナリティを見てみると、以下の表のようになります。

カラム名

値の一覧カージナリティ

pkcol

1,2,3,4,55

c1

v11,v21,v31,v414

c2

v12,v22,3333,v424

ログの「node count = 」から各カラムのカージナリティも確認できますね。

ちなみに、Enterprise Managerのデータファイル情報からもカラムのカージナリティは確認可能です。

おわりに

本記事では、Connectのデータ挿入コンポーネントのうち「書き込み(DataLoader)」について紹介しました。

専用のアップデートロード処理によって高速にUPSERTが可能です。

他のコンポーネントについても紹介しているので、ぜひご覧ください。

 

 

 

 

 

この記事にリアクションしてみませんか?

What do you think of this post?
  • 分かりやすい (1)
  • 問題が解決した (0)
評価いただいてありがとうございます!

宇根 昌和

MotionBoard Dr.Sum
プロフィールへ >

新卒でウイングアーク1stへ入社、プリセールス活動後、Dr.Sumの開発を行っています。Pythonをベースに様々なツールからデータをDr.Sumへ集約しMotionBoardで可視化する仕組みを作ったり、Web APIを使ったデータ蓄積ノウハウをテーマにイベント登壇したりしています。Dr.Sum及びMotionBoardを中心とした役立つ情報を発信していきます!

Related article

Related article関連記事

Pick up

Pick upおすすめ記事

【Connect】開発コスト・運用コストを抑えたスクリプトの構築方法

公開:2025.02.06
更新:2025.02.06

分かりやすい

1

解決した

0
  • データ取り込み
  • データ加工

Dr.Sum

invoiceAgent【「業務を変える動画たち」シリーズ】記事まとめ

公開:2025.01.16
更新:2025.08.12

分かりやすい

0

解決した

0
  • 業務を変えるシリーズ

invoiceAgent

【脱Excel】MotionBoardの入力機能で業務アプリをつくる

公開:2024.08.05
更新:2024.08.05

分かりやすい

6

解決した

2
  • データ入力
  • デザイン
  • コンテナ

MotionBoard

Ranking

Rankingランキング

1

Excelのデータを加工したい。~変換(横持ち⇔縦持ち)について~

公開:2021.01.19
更新:2024.05.08

分かりやすい

8

解決した

3
  • データ取り込み
  • データ加工

Dr.Sum

2

【DELETE-INSERT】特定期間のデータのみ洗い替えたい!【手動編】

公開:2024.01.10
更新:2024.05.08

分かりやすい

2

解決した

0
  • データ取り込み
  • SQL

Dr.Sum

3

【あの頃に戻りたい】バックアップから任意のテーブルだけを戻す方法

公開:2023.11.07
更新:2023.11.20

分かりやすい

1

解決した

0
  • 設定

Dr.Sum

Info

Information

ウイングアーク1stからのお知らせ