TECH BLOG

MENU

オンプレクラウド

Dr.Sum

Dr.Sum

精度の高いデータ分析を行うには、データの整合性がとれていることが重要です。
そのためには、欠損や重複といったデータの不備を解消するデータクレンジングの作業が必要になります。

Dr.SumにはDS Scriptというスクリプト機能があり、データ加工とバッチ処理を強力に支援してくれます。
制御フローによる条件分岐や繰り返し、SQLによるデータ修正やワークテーブルを使った処理が可能です。

本記事では、DS Scriptでデータクレンジングを行う方法をサンプルコードを用いてご紹介します。

 

データクレンジングとは?

データクレンジングとは、データの重複や表記のゆれを見つけ、修正や削除を行うことです。
フォーマットや表記の統一・欠損値の補完などを行うことで、データの質を向上させることができます。

今回はDr.Sumのテーブルに格納されたデータのフォーマットを統一し、値が欠損しているレコードをワークテーブルのリストから補完する処理を実施します。

 

サンプルデータの準備

サンプルデータをDr.Sumの任意のデータベースにインポートしてください。

サンプルデータ(売上実績.csv)のダウンロード

 

サンプルデータをインポートした売上実績テーブルの中身は以下のようになっています。
商品コードの桁数が違っていたり、商品名が欠損している、商品名に半角・全角が混在しているなど、
表記のゆれがあるため、このままだと同じ商品の売上がバラバラに集計されてしまいます。

 

スクリプトの準備

以下の処理を実施するスクリプトを作成します。

  1. 商品コードを左ゼロ埋め5桁に統一する(LPAD関数)

  2. 商品名の半角を全角に統一する(FULLW関数)

  3. 空欄の商品名を同じ商品コードの名称で補完する
//データベースに接続します(DB名は適宜変更してください)
CONNECT("サンプルDB") {
}

//Dr.SumのSQL関数でデータを修正します
SQL($_SQL_AUTO_COMMIT_ON) {
    --商品コードを左ゼロ埋め5桁に統一します
    UPDATE 売上実績 SET 商品コード=LPAD(商品コード,5,'0');
    --商品名の半角を全角に統一します
    UPDATE 売上実績 SET 商品名=FULLW(商品名);
}

//ワークテーブルに商品コードと商品名のリストを作成します
SET() {
    $WORK = generate_wkname("work");
}

EXPORT_WK("サンプルDB",
         $WORK,
         $_EXPORT_MODE_TRUNCATE,
         $_ERROR_MODE_INTERRUPTED,
         $_TABLE_CREATE_MODE_NORMAL) {
    SELECT 商品コード,商品名
    FROM 売上実績
    WHERE 商品名 IS NOT NULL GROUP BY 商品コード,商品名;
}

//商品名が欠損しているレコードをワークテーブルの同じ商品コードの名称で補完します
SET_FROM_QUERY() {
    @TARGET = SELECT * FROM 売上実績 WHERE 商品名 IS NULL;
}

FOREACH (@TARGET, i) {
    SET_FROM_QUERY() {
        $ITEM_NAME = SELECT 商品名 FROM ${WORK} WHERE 商品コード='${TARGET_商品コード}'
    }

    SQL($_SQL_AUTO_COMMIT_ON) {
        UPDATE 売上実績 SET 商品名='${ITEM_NAME}' WHERE 売上Seq=${TARGET_売上Seq}
    }

}

上記スクリプトをスクリプトルート(SCRIPT_ROOT)に配置してください。

スクリプトファイル(data_cleansing.dhn)のダウンロード

 

スクリプトルートの場所は、[Enterprise Manager]-[サーバー]-[設定]から確認できます。

 

スクリプトの実行

コマンドプロンプトを起動し、スクリプトを実行します。
コマンド(dwscr_execute)のパラメータは左から、サーバ名・ポート番号・ユーザー名・パスワード・ファイル名・ログ出力先、となっています。各自の環境に合わせて適宜変更してください。

dwscr_execute "localhost" 6001 "Administrator" "password" "SCRIPT_ROOT/data_cleansing.dhn" ""

 

スクリプト実行後の売上実績テーブルの中身は以下のようになります。
商品コードと商品名の表記が統一されており、商品名も補完されていることを確認できます。

 

さいごに

データクレンジングの内容はケースバイケースですが、スクリプトに必要な処理を記述しておけば、DS Scriptで同じデータ加工を繰り返し処理することができます。

スクリプトをバッチファイルから呼び出して、定期的にスケジュール実行することもできますので、是非ご活用ください。

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

  • 分かりやすい (0)
  • 問題が解決した (0)
プロフィールへ

秦耕一

2023年にウイングアークに入社。 Dr.SumとMotionBoardのプリセールス担当として、データ活用と可視化の分野でお客様をサポートしています。 製品の技術情報や活用事例をブログで共有していますので、ぜひご覧ください。

Related article

Related article関連記事

Pick up

Pick upおすすめ記事

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

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

2024.08.05

MotionBoard

【まとめ】SVF Cloud帳票をinvoiceAgentに連携する方法

  • #帳票作成・出力
  • #システム連携
  • #電帳法
  • #文書定義
  • #処理定義

2024.04.18

SVF

Dr.Sum Copilotをインストールしてみた【OpenAI】

  • #Copilot

2024.04.05

Dr.Sum

Ranking

Rankingランキング

1

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

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

2021.01.19

Dr.Sum

2

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

  • #設定

2023.11.07

Dr.Sum

3

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

  • #データ取り込み
  • #SQL

2024.01.10

Dr.Sum

Info

Information

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

int(59)