現場からの話とヒント。 MDOXを使ったアジャイルなデータ変換

COL03x - feature image oneil already 300x300 アジリティとは何でしょう? 私は、「あらゆる方向に素早く、流動的に、効率よく動く能力」と定義しています。 データ変換では、情報は一連の操作からなるプロセスを通じて移動します。 理想的には、プロセスは可逆的であるべきで、それによって情報が失われないようにします。

変換操作をテーブルで一般的にモデル化することにより、MDOX は、簡単に実行、取り消し、修正、繰り返し、または削除できるアジャイル データ変換の作成を可能にします。 この記事では、アジャイルなデータ変換を実装するプロセスに焦点を当て、MDOXに “X “を入れることにします。

前回記事「MDOX の紹介」の表 5 に、テーブルの主なフィールドを示します。

Picture1

テーブルには、親テキストから子要素を再帰的に解析できるよう、親項の要素に任意の正規表現を適用する方法を制御する複数のフィールドも含まれています。

Picture2

フィールド内の正規表現のマッチは、テーブルに一時的に格納されます。

Picture3 テーブル内の各レコードは、1 つの変換処理を定義します:

  1. Field に正しい正規表現がある場合、その表現が長いテキストに適用されます。 Regex のマッチは一時的にテーブルに保存されます。
  2. If field contains a valid SQL statement, then the statement is performed by the application.If field contains a valid SQL statement, then the statement is performed by the application. Select および Transform クエリは画面に表示されるか、プロセスが自動化されている場合は、スプレッドシートとして現在のアプリケーション ディレクトリにエクスポートされます。 Insertステートメントは、テーブルまたは更新可能なビューに新しいレコードを追加します。 Update または Delete ステートメントは選択されたレコードに影響します。

無効な正規表現または SQL ステートメントが存在すると、プロセスが失敗することに注意してください。 開発者は、プロセス全体が問題なく実行されるまで、各操作を繰り返しテストする必要があります。 条件に子項目があり、「ツリーを降順に」オプションが選択されている場合、子項目は順番に処理されます。 したがって、変換内の操作の全体的な順序は、.と.の両方によって決定されます。これらのフィールドを更新するだけで、以前に開発した操作を新しい場所に移動させることができます。 MDOXアプリケーションを使用すると、新しい用語や操作を簡単に作成したり、既存の用語や操作の名前、説明、および順序を更新したりすることができます。 データまたはメタデータオブジェクトが削除された場合、カスケード削除により、そのオブジェクトから派生したすべてのオブジェクト(サブターム、プロパティ、プロセス、要素、属性、正規表現マッチなど)が削除されます。 この動作は有益である。 下の図は、”test “という用語が、”regex “という子用語を持ち、”test “要素で見つかった正規表現マッチを報告するプロセスを持つとするものである。 後で “test” 項目を削除すると、すべての子項目がデータベースから消えます。

例 1: 正規表現マッチからクロスタブ・レポートを作成する変換操作

Picture4 正規表現 “(\d+)\.\s(\w+)” は、括弧で囲まれた 2 つの部分式で構成されています。 最初の部分式( \d+) は、1つ以上の数字にマッチします。 2つ目の式(w+)は、1つ以上の文字にマッチします。 これらの部分式の間にある””式””は、ドットの後に空白文字が続く場合にマッチします。 この例では、MDOX は親項目 “test” の要素で正規表現 “(\d+)\.\s(\w+)” を検索します。

Picture5

正規表現マッチは、

  • = 0 => 正規表現マッチ全体、例えば、次のテーブルに格納されています。g. “10. foo”
  • = 1 => 第1部分式のマッチ、例. 10″
  • = 2 => 2 番目の部分一致、たとえば “bar”

Picture6

正規表現が収集された後、別の操作がこの SQL テキストをコンパイルおよび実行します:

TRANSFORM First(.value) AS FirstOfvalue
SELECT Element.elem_id, Element.elem_value, .nmatch
FROM Element INNER JOIN _regexp ON Element.elem_id = .rid
GROUP BY Element.elem_id, Element.elem_value, .nmatch
PIVOT .nsub;

結果のレコードセットが表示または “Test_regex.X” としてエクスポートされます。csv”:

Picture7

例 2: ファイルシステム オブジェクトのカタログを作成する変換操作

更新可能なビューは次のように定義されます:

SELECT Elements.*, Attributes.attr_name, Attributes.attr_value, Attributes.elem_id AS attr_id
FROM Elements LEFT JOIN Attributes ON Elements.elem_id = Attributes.elem_id;

次のステートメントは関連属性とともに新しい要素を .NET に挿入する。

INSERT INTO attributes ( elem_id, attr_name, attr_value )
SELECT GetFileSystem(GetFolderDialog("Select root folder for files"),".*"
,True,True) AS elem_id, "insertDateTime" AS attr_name, Now() AS attr_value;

この操作は、上記のステートメントを使用して、ファイルシステムのカタログを作成します:

Picture8

作成されたカタログは、ファイルシステム属性を持つ要素の階層構造になっており、たとえば、次のようになります。g.

Picture9

続く操作は、Elements と Attributes に基づいたビューを通して、選択したファイルをレポートすることができます。 このオプションは、テキスト コンテンツを持つファイル (例: filetypes txt, sql, doc, ppt, pdf, html など) の正規表現解析に便利です。

同様の GetData() 関数は、他のタイプのデータを MDOX データベース スキーマにインポートします。 たとえば、GetSheets() は Excel スプレッドシートおよび Word ドキュメントから表形式データをインポートします。 GetWordDoc() は、PDF や PowerPoint など、Microsoft Word で開くことができる任意のドキュメント・フォーマットからテキスト・コンテンツをインポートします。 GetXml() は、XML、XSD、WSDL ファイルなどのテキストベースのマークアップ形式から、関連する属性を持つ 要素として構造化データをインポートします。 これらのデータ インポート メソッドの実装の詳細については、次の TDAN 記事「MDOX アプリケーション開発」で説明します。

GetData() メソッドを使用して MDOX にソース データを最初にインポートした後、データを目的の出力形式にさらに変換する新しい用語や処理を開発し、エクスポートしたりリンクしたデータベース テーブルに直接ロードしたりすることが可能になります。 このシリーズの最後の記事「MDOX データ変換テクニック」で、複雑さの程度が異なるいくつかの変換例を説明します。

要約すると、MDOX では、データとプロセスを汎用的にモデル化することにより、俊敏なデータ変換が可能になります。 これにより、静的なデータ モデル内でデータ処理を促進するアプリケーションを構築することが可能になります。 MDOXは、操作で構築されたプロセスを通じて、複雑な変換を自動的に実行することができ、必要に応じて、実行、取り消し、修正、繰り返したり、削除することができる

コメントを残す

メールアドレスが公開されることはありません。