はじめに
DataMagic は、色々な機能を備えています。
機能・概要一覧
| 機能 | 概要 |
|---|---|
| マッチング | 入力ファイルのレコードと、共通する項目名をキーにした複数のマッチングファイルのレコードを結合し、一つのデータセットとして出力する |
| マージ | 入力ファイルとマージファイルを連結して、入力マージデータとして取り扱えます。入力マージデータに対しては、データ加工前に重複行の削除やソートする |
| 出力先振り分け | 抽出条件に沿って、出力ファイルを振り分ける |
| 数値項目演算 | 出力項目が数値タイプの場合、入力項目同士や任意の値との演算式を指定し、その演算結果を出力項目の値として出力する |
| データ抽出 | 入力データから、指定した条件に合致したデータのみを抽出する |
| 項目入替 | 入力データの項目を入れ替えて、別のフォーマットで出力する |
| 項目結合 | 複数の項目を結合して、1つの項目として出力する |
| 項目分割 | 単一項目を分割して、複数の項目として出力する |
| 全角半角 | 「カナ」「英数字」および「記号」を、半角から全角、全角から半角へ変換する |
| 出力フォーマット指定 | 日付型、数字文字列型の入力項目を出力する際に、フォーマットを指定する |
| 入力ソート | 入力ファイルの形式がCSV、フォーマット、Excelの場合は、データ加工の前にソートする |
| 属性変換 | 入力データを出力データに変換する際に、数値タイプを任意の数値タイプへ変換する |
| 日付項目演算 | 日付データに対して、演算や西暦⇔和暦の変換を指定し、その結果を出力項目の値として出力する |
| 関数 | 入力項目の値を関数で処理し、その処理結果を出力項目の値として出力する |
| マッピング | 入力ファイルから出力ファイルへのデータの流れや加工、変換ルールを定義し、異なるデータ形式間での項目の対応関係を設定する |
| 動的指定 | データ加工の実行時にコマンドの引数に指定した数値や文字列を、条件や出力情報に使用できる |
| ユーザ出口変換 | データを加工するときに、項目単位で独自の変換を設定するために、ユーザ出口プログラムを独自に作成できる |
| データ挿入 | レコード内の任意の項目にユーザ指定の任意の値を挿入できる |
| 仕様書出力 | データ加工の処理と設定内容を仕様書としてExcelファイルに出力できる |
| チュートリアル | データ加工の設定を対話的に実行して、DataMagicの基本的な操作方法を習得できる |
| カスタムエラー | カスタムエラー条件を使用すると、データの形式は問題ないが、意図しないデータ(例 別の事業所のデータ)を検出したときにデータ加工をエラーにできる |
| ステップ実行 | プログラムのデバッガの処理のように、経過を確認しながら実行し、意図するように変換できなかった場合の解析、またはデータ加工の処理経過の確認に使用できます。 |
| コード変換 | 1バイトコード間、または2バイトコード間で、文字コードを変換する |
今回の課題
ネタを探して 新機能・非互換説明書 を漁っていたら、DataMagic Ver.3からの改善機能の中に 以下の記述を発見!
- CSVの項目に改行が含まれていても、改行をデータとみなす指定を追加しました
- 囲み文字で囲まれている項目が2つ連続している場合にエスケープする指定を追加しました
本当は二つとも紹介したかったのですが、二つ目の「囲み文字」の動きが腑に落ちていないので、今回は一つ目の「改行をデータとみなす指定」だけ紹介。
入力データ
千代田区、中央区、港区、新宿区、文京区の区役所の所在地と最寄り駅の情報を入力データとして、中央区と新宿区の所在地の中に改行を含めてみました。
"区名","所在地","主な最寄り駅"
"千代田区","九段南1-2-1","九段下駅"
"中央区","築地
1-1-1","新富町駅"
"港区","芝公園1-5-25","御成門駅"
"新宿区","歌舞伎町
1-4-1","新宿駅"
"文京区","春日1-16-21","後楽園駅"
解析方法の指定
新機能・非互換説明書 によると、
- システム動作環境設定画面[データ加工設定]タブの「改行を項目の一部として扱う」を "ON" にする。
- システム動作環境設定ファイル(huledenv.conf)の「改行を項目の一部として扱う(ed_csv_linebreak)」に "1"(扱う)を指定する。
とあります。
システム動作環境設定ファイル(huledenv.conf)は、DataMagic の導入先ディレクトリ > etc ディレクトリ にあります。
一応、新規導入時は両方とも、"扱う" 指定になっているようです。
データ加工
入力ファイルエリアの編集 をして、[プレビュー]をクリックすると、築地と歌舞伎町の後ろに入っている改行コードがデータ扱いされて(WindowsOSで検証しているので)CRLF(\r\n)で表示されています。
ちなみに、どちらかの指定を "扱わない"(=改行コードをデータとみなさない)にして、プレビューしてみると
エラーになっちゃった。
付随情報
CSVの項目に改行が含まれていても、改行をデータとみなす って教えられてもね~。
じゃあ、この 改行
をどうしたいのか!
勿論、DataMagic は、その先もお役に立てます![]()
この場合は、関数の REPLACE_REG を使用することで問題解決です![]()
改行コードを消したい
改行コードを削除したい場合は、出力情報の関数行に以下の関数を書けば ![]()
REPLACE_REG{/\r/\n/,///}
すると、中央区と新宿区の所在地にあった改行コード(\r\n)が無くなりました
改行コードを追加したい
改行コードを追加するのは、私の今のレベルではチョット困難。
REPLACE_REG関数が使えれば簡単なのですが、説明を見ると
検索する文字列を指定します(省略不可)
REPLACEMENT:
置換する文字列を指定します(省略不可)
16進数での文字列の指定はできません
なので、いつか、もし、やり方が分かったら、コソっとこの下に追記します。
以上です。





