Designer+Windows:項目数が不揃いなCSVレコードの合成

EDI(電子データ交換)などではよく見かける、ヘッダーレコード、ボディ(本体)レコード、トレーラーレコードの3部構成仕様のCSVレコード(テキスト+カンマ区切りレコード)があったとします。

0,5
1,apple,リンゴ
1,banana,バナナ
1,cat,ネコ
1,dog,イヌ
1,egg,タマゴ
2

上記の例だと、第1項目がレコード区分で、"0" のときヘッダーレコード。"1" がボディレコード、"2" がトレーラーレコードです。ヘッダーレコードの第2項目には、ボディレコードの件数が記載されています。

このような項目数が不揃いな(カンマの個数が不揃いな)CSVレコードの合成には、外部アプリでtypeコマンドを実行させる方法が簡便です。

 f:id:xoblos:20180310103451p:plain

 

mix.bat の内容

type header.csv > all.csv
type body.csv >> all.csv
type trailer.csv >> all.csv

[bat] フォルダにmix.batというバッチファイルを用意しておき、その前手順で、3種類のCSVレコードを [bat] フォルダに名前を変えてコピーしておきます。

header.csv … レコード区分 "0" のヘッダーレコード

body.csv … レコード区分 "1" のボディレコード

trailer.csv … レコード区分 "2" のトレーラーレコード

 

外部アプリとしてmix.batを実行すると、合成されたall.csvが出力されますので、次手順で出力したい場所に名前を付けてファイルコピーします。

typeコマンドのコツは、1種類目を > でそのままリダイレクト出力し、2種類目以降を >> で追記(アペンド)モードでリダイレクト出力する点です。

corabo:ネットワークドライブ指定の注意点_二の太刀

管理者権限設定の壁。

前回記事で、管理者としてネットワークドライブの割り当てを行うことで、ファイルやフォルダのパス指定にネットワークドライブが設定できるようになるお話をしました。ところが下図のように――

f:id:xoblos:20180302123417p:plain

‥‥マシン本体を再起動すると、利用不可になってしまいます。

管理者以外で設定したネットワークドライブは、暫く待てば接続を行ってくれますが‥‥。管理者として設定したそれは、起動の都度設定を行う必要があるようですね。

しかし、わざわざコマンドプロンプトを管理者として実行し、コマンドをカタカタ入力するのは非常に手間です。共通のコマンド処理というのは、本件に限らず「バッチ処理化」することが望ましいもの。そう聞くと、何やら難しそうなイメージを持つ方もいらっしゃるかもしれませんが‥‥何ということはありません、入力する内容を予めテキストファイルに記載しておき、それを実行ファイルとしてしまうだけです。

f:id:xoblos:20180302123427p:plain

メモ帳などで作成するにしても、保存の際にはファイル拡張子を「.bat」にすること、忘れないようにしましょう。

さて、上図が基本的な「バッチ処理化」の作成方法ですが‥‥今回の場合は、"管理者として" というキーワードがもう一工夫を求めてきます。何故なら、上図はあくまで管理者以外で設定したバッチファイル――つまり、コマンドプロンプト通常の方法で起動し、コマンドをカタカタ入力して実行させていることと、全く同じであるからなのです。

f:id:xoblos:20180302123439p:plain

"管理者として" バッチ処理を行わせるには上図の設定が要ります。先ず青枠のように、前述までで作成した .bat ファイルのショートカットを作成し、プロパティを起動します。続いて赤枠のように、プロパティ内の「詳細設定(D)...」ボタンを押下し、「詳細プロパティ」を起動します。最後に緑枠のように、「管理者として実行(R)」をチェックオンにします。これで、作成したバッチ処理内容を管理者として実行する前提が、付加できました。このショートカットは、ダブルクリックするだけで一連の設定を行ってくれます。ショートカットその物を、タスクスケジューラでスケジューリングしてしまえば、それこそ自動起動も実現しますね。

残念ながら、マシン起動時のネットワークドライブの接続は、グループポリシーの設定で「コンピュータの起動及びログオンで常にネットワークを待つ」を有効にしたとしても、効果は無いようです。マシン起動から接続の待ち時間を設けたとしても、ステータスが「利用不可」となったドライブは、いつまでも接続が行われることは‥‥決して無いでしょう。

Designer:二つの空欄(Null)

「並べ替え」は区別をしてくれる。

f:id:xoblos:20180228161802p:plain

上図のように、一つのブックに複数のシートで情報が分かれており‥‥処理の主要情報は「事業所コード」と「事業所名」の二つであったとします。「data1」と「data2」は一つの抽出制御シートを使い回しできそうですが、「data3」は別途用意する必要がありますね。

抽出結果である各 xml ファイルを確認すると、「data3」は最早、別情報です。システムの世界では、"事業所名が無いだけの差" ――は、表現として充分ではありません。

しかし xoBlos では『抽出データ並替』という手順で、これら異なる情報をすんなり結合させることが可能です。入力データの結合の基本は、前回記事をご参照ください。

f:id:xoblos:20180228161809p:plain

三つのデータを全て対象に、「事業所名」「事業所コード」の順でソート条件とし、結合してみましょう。「data3」に存在しなかった「事業所名」は、他データと合わせる為に自動で設けられました。勿論、値の考えは無いので空欄が入りました。しかし「data1」と「data2」にも、値として空欄(Null)の「事業所名」がありました。見た目としては同じ空欄であるのにも拘らず、連続して並んでいません。

手順『抽出データ並替』は、値が空欄であるデータと、元々項目そのものが存在していなかったデータの――二つの空欄(Null)を、区別することができるという訳ですね。

corabo:ネットワークドライブ指定の注意点_初太刀

ネットワークドライブをパス指定する。

前回記事で、Designer からネットワーク上にあるフォルダ/ファイルを参照する際に、ホスト名或いは IPアドレスの、2パターン使用できることをご案内しました。

では、それらの情報を割り当てたドライブの表記はどうなるのでしょうか。‥‥最初の 2パターンと同様、Designer の設定とセキュリティ例外設定は、内容が一致していなければなりません。

ネットワークドライブの割り当て

f:id:xoblos:20180223151620p:plain

上図例では、あと適したコピー先の設定さえすれば、Designer 時点では正常な動作結果を得られます。しかしこの方法は――corabo からの実行では、たとえセキュリティ例外設定を万全に行ったとしてもエラーになってしまいます。

f:id:xoblos:20180223151628p:plain

コマンドプロンプトを、管理者として開く(上図の上部)か、普通に開く(上図の下部)かで、冒頭の図で列挙した Zドライブは見え方が変わります。ここまで来ると、察しがつく方もいらっしゃるかもしれません‥‥そうです。管理者権限を前提に設定/参照ルートを成している corabo では、管理者権限を持った上で割り当て設定したネットワークドライブでなければ、取り扱えないのです。

ネットワークドライブの割り当て(管理者モード)

f:id:xoblos:20180223151637p:plain

引き続き管理者として実行したコマンドプロンプトから、ネットワークドライブの割り当てを行ってみましょう。上図の上部のように、コマンド「net use 割り当て先ドライブ(任意) 割り当て先アドレス」を入力します。割り当て先を接続する際、ユーザー名とパスワードが必要な場合は、赤枠のような入力テキストが出力されます。

現在の割り当ての詳細を一覧表示する場合は、上図の下部のように、コマンド「net use」のみで確認が行えます。

さて、これで Yドライブとして設定すれば corabo からの実行でも正常に動作するようになりました。しかし今度は逆に、Designer の方がエラーを出すようになります。‥‥テスト(Designer 実行)用/本番(corabo 実行)用と、パラメータで分けておく等の工夫が必要ですね。

f:id:xoblos:20180223151647p:plain

xoBlos 業務チェックシート

xoBlosでExcel業務システムを構築するときの、診断・計画フェーズや要件定義フェーズにおいて効果的な設問を、チェックシートでまとめたものがあります。

参考文献:「不況に負けない Excelデータ分析術」著:平井明夫/綾部貴淑/石飛朋哉 発行:翔泳社

  1. PDCAサイクルの、どこをカバーする業務でしょうか?
  2. どのような観点で業務を分析したり、業績評価に利用されたいのでしょうか?
  3. データの取得先や取得方式はどうしているでしょうか? 今後どうされたいでしょうか?
  4. 現状の仕組みでお困りな点は何でしょうか?
  5. 業務分析や業績評価の対象となる主な数値項目は?
  6. 業務分析や業績評価の管理ポイント(分析軸)は?

xoBlos 業務チェックシート

Designer:キーワードの処理順序

処理順序を意識して作成しよう。

制御シートのキーワードは、記述する分には順不同で問題ありません。しかし当然ながら、処理が行われる順序は決まっています。抽出や生成で、「エラーも出ず」「正常終了しているのにも拘らず」「作成した制御シートには一見やりたいことが全て施されているのにも拘らず」‥‥期待する結果が出ない!――と成った場合は、設定したキーワードの処理順序から、見直してみても良いかもしれません。

役割が近いキーワードは要注意

下図のようなマスタデータ(左)とメインの入力データ(右)があったとします。

f:id:xoblos:20180207165043p:plain

更にその入力データを基本入力データとし、マスタデータを変換入力データとし、事業所の ID でマッチングさせ、「事業所名称」を取る制御シートがあったとします。

f:id:xoblos:20180207172338p:plain

「#事業所_切り出し」は、キーワード『取得データの切り出し』により、"入力項目「事業所」の 1桁目から全ての文字列" を保持しています。打って変わって「#事業所_組合せ」は、キーワード『取得データの組合せ』により、"入力項目「事業所」を丸々参照した内容" を保持しています。‥‥つまるところ、これら保持している内容は全く同じということになります。

それぞれを全く同じ、変換入力ファイル参照/マッチ条件/変換対象項目の取得を行い、生成します。

f:id:xoblos:20180207172053p:plain

E列――もとい、キーワード『取得データの組合せ』で変換させたものは、事業所名を取得できませんでした。

つまり、①キーワード『取得データの切り出し』、②変換入力、③キーワード『取得データの組合せ』という処理順序が生成の仕様であり、「#事業所_組合せ」は値が何も入っていない状態で変換入力を行い、アンマッチであったことが明らかになります。要件によって、『取得データの切り出し』の「%項目名%,1」と、『取得データの組合せ』の「%項目名%」は、使い分ける必要があるということですね。

処理順序は、「xoBlos Designer ヘルプ」サイトよりダウンロードできる、各リファレンスマニュアルに「Exporter処理順序」「Importer処理順序」とシートが用意されておりますので、ご確認ください。

corabo:業務の処理速度改善

電源オプションの設定を確認してみよう。

大量データを取り扱う、或いは手順が多く複雑である業務は、処理速度が相応に遅くなってしまいます。‥‥しかし果たして、本当にそれらの理由だけによるものなのでしょうか。ひょっとすればパソコンの設定で改善されるかもしれません。

f:id:xoblos:20180126161852p:plain

[コントロールパネル]―[すべてのコントロールパネル項目]―[電源オプション]を実行すると、上図のように「電源プランの選択」というものが出てきます。各プランは、それぞれどういう程合いで設定されるか明示されております。他に影響が出ないことを前提に、設定を変えてみてください。「省電力」のように電力消費とパフォーマンス低下から改善された例もあれば、逆に「高パフォーマンス」で電力消費もパフォーマンスも高くして改善された例もあります。特に、以下の環境に corabo が置かれているようであれば、参考にしてみてください。22時間、処理時間が短縮された前例もあります!

Hyper-VAWS