グローバルテーブルでデータを検証する

概要と主要な概念

データをFlexSimにインポートしたら、そのデータを検証することが重要です。たとえば、モデルにおいて、指定されたテーブルが特定の列セットを持ち、最初の列が数値データ、2番目の列がテキストデータなどのように想定されているとします。このような想定をチェックするために、FlexSimではテーブル検証ツールを提供しています。

モデル内のすべてのテーブルを1つのテーブル検証ツールで検証できます。ただし、複数のテーブル検証ツールを持つことができるため、必要に応じて整えておくことができます。

テーブル検証ツールの設定には、次の手順が含まれます。

  1. 検証するテーブルを1つまたは複数指定します。
  2. 各テーブルについて、1つまたは複数のデータ範囲を指定します。範囲とは、列や行など、テーブルのデータのサブセットのことです。
  3. 一連のルールを指定します。ルールとは、範囲内のデータが合格しなければならないテストのことです。
  4. 範囲ごとに、その範囲が合格しなければならないルールを指定します。

テーブル検証ツールを設定したら、[検証]ボタンを押してデータを検証できるようになります。データの検証時、テーブル検証ツールは各範囲の各値にアクセスし、その範囲に接続されているすべてのルールに基づいてその値をチェックします。テストに合格しない値があれば、テーブル検証ツールはエラーを記録します。

検証]ボタンのほかに、FlexScript APIを使用することもできます。

TableValidation("MyTableValidation").validate()

この方法では、モデルが自動的にデータを更新する場合、そのデータがすぐに検証されるようにすることもできます。

入力データを検証する理由

すべてのモデルには、入力データについての想定があります。入力データがその想定と一致しない場合、モデルが正確に動作しなくなります。シミュレーションモデルは入力データを結果に変換する関数である、という考え方があります。入力データが無効であれば、信頼できる結果が得られにくくなります。

入力データを検証すると、信頼できる結果が出るだけでなく、時間の節約にもなります。テーブル検証ツールの設定にかかる時間はほんの数分程度です。質の悪いデータを使えば何時間も無駄になる場合が多いということを考えれば、数分かけて設定することには価値があります。

一般的な検証タスク

このセクションでは、モデルで必要となる、より一般的な検証タスクをいくつか取り上げて説明します。それぞれのタスクの手順は、すでにモデル内にグローバルテーブルがあることを前提としています。

列ヘッダーをチェックする

テーブル検証ツールを使って、テーブルの列が存在し、それらが正しい名前を持っていることをチェックできます。次の手順でテーブル検証ツールを設定できます。

  1. テーブル範囲]タブに移動します。

  2. [追加]ボタン をクリックし、メニューから目的のグローバルテーブルを選択します。この操作は、グローバルテーブルごとに1回だけ実行します。テーブル検証ツールにグローバルテーブルを追加済みの場合は、リストから目的のテーブルを選択します。
  3. 範囲]エリアで、[追加]ボタン をクリックして、選択したテーブルに範囲を追加します。

    上の画像では1つの範囲しか表示されていませんが、それぞれのテーブルには複数の範囲を設定することができます。
  4. 範囲のタイプ]を[列ヘッダー]に変更します。
  5. ルール]エリアの近くで、[追加]ボタン を使用し新しいルールを追加してこの範囲と接続します。ウィンドウが自動的に[ルール]タブに移動し、新しいルールが選択されます。

  6. [ピックリスト]ボタン をクリックし、[ルールの設定]にカーソルを合わせて[値は正確な設定を形成]を選択します。
  7. 値の配列を、期待される列名と一致するように編集します。たとえば、テーブルにSKU、注文、数量という列がある場合、値の配列は次のようになります。

検証中、テーブル検証ツールは各列のヘッダーにアクセスし、n番目のヘッダーが配列のn番目の値と一致することを検証します。ヘッダーが値と一致しない場合、このルールは失敗となり、エラーが記録されます。

列内の数値データをチェックする

テーブル検証ツールを使用して、列内のすべての値が数字データタイプに設定されていることを確認できます。次の手順でテーブル検証ツールを設定できます。

  1. 列ヘッダーをチェックする」セクションの手順1~3に従い、テーブル検証ツールのリスト内にグローバルテーブルがあることを確認し、そのテーブルに新しい範囲を追加します。
  2. 範囲のタイプ]が[]に設定されていることを確認します。
  3. 値の範囲]フィールドで、チェック対象の列の数字または名前を指定します。
  4. ルール]エリアの近くで、[追加]ボタン を使用し新しいルールを追加してこの範囲と接続します。ウィンドウが自動的に[ルール]タブに移動し、新しいルールが選択されます。
  5. [ピックリスト]ボタン をクリックし、[数値のルール]にカーソルを合わせて[数字]を選択します。

検証中、テーブル検証ツールは指定された列のそれぞれの値にアクセスし、その値が数字であることを検証します。

列の先頭または末尾のスペースをチェックする

インポートされたデータでよくある問題の1つとして、テキストデータ内の先頭または末尾のスペースが挙げられます。このエラーを目視確認することは非常に困難です。テーブル検証ツールを使用すると、この問題を回避できます。次の手順でテーブル検証ツールを設定できます。

  1. 列ヘッダーをチェックする」セクションの手順1~3に従い、テーブル検証ツールのリスト内にグローバルテーブルがあることを確認し、そのテーブルに新しい範囲を追加します。
  2. 範囲のタイプ]が[]に設定されていることを確認します。
  3. 値の範囲]フィールドで、チェック対象の列の数字または名前を指定します。
  4. ルール]エリアの近くで、[追加]ボタン を使用し新しいルールを追加してこの範囲と接続します。ウィンドウが自動的に[ルール]タブに移動し、新しいルールが選択されます。
  5. [ピックリスト]ボタン をクリックし、[テキストルール]にカーソルを合わせて[末尾または先頭のスペースなし]を選択します。

検証中、テーブル検証ツールは指定された列のそれぞれの値にアクセスし、その値がテキストであり、先頭と末尾にスペースがないことを検証します。

その他の一般的な列チェック

一意の値 - 多くのテーブルには、すべての値が一意であることが想定される列があります。テーブル検証ツールを使用すると、この点をチェックできます。新しいルールを追加します。[制約]の[ピックリスト]ボタン をクリックし、[ルールの設定]にカーソルを合わせて[値は固有]を選択します。その後、任意の範囲にルールを接続します。

2番目のテーブル内の値 - 多くの場合、データは複数のテーブルに分割されています。テーブルは、共有データを持つ列によって関連付けられます。たとえば、SKUごとに1つの行を持つSKUテーブルと、注文ごとに1つの行を持つ注文テーブルがあるとします。注文テーブルにはSKU列があり、SKUの値はSKUテーブルに存在することが想定されます。テーブル検証ツールを使用すると、この点をチェックできます。新しいルールを追加します。[制約]の[ピックリスト]ボタン をクリックし、[ルールの設定]にカーソルを合わせて[値はテーブルの列内]を選択し、ポップアップを使用してソース列を指定します。その後、任意の範囲にルールを接続します。

値の順序 - 一部のテーブルでは、列が順番に並べ替えられていることが想定されています。テーブル検証ツールを使用すると、この点をチェックできます。新しいルールを追加します。[制約]の[ピックリスト]ボタン をクリックし、[並べ替え]にカーソルを合わせて[並べ替え済み]を選択します。その後、任意の範囲にルールを接続します。

無効な値を修復する

テーブル検証ツールの各ルールには、失敗時コールバックがあります。このコールバックを使用すると、ルールに合格しないデータを修復することができます。たとえば、値が整数でなければならないというルールがある場合、「4」というテキストはルールに一致しないことになります。しかし、失敗時コールバックを使用し、このテキストを数字に変換することができます。コールバックが1を返す場合、修復された値のログにエラーは表示されません。

列をテキストからノード値に変換するのも、一般的なタスクです。テーブル検証ツールを使用すると、検証中にこのタスクを実行することができます。有効なオブジェクト名またはパスを持つテーブルがあると想定した場合、次の手順でテーブル検証ツールを設定できます。

  1. 列ヘッダーをチェックする」セクションの手順1~3に従い、テーブル検証ツールのリスト内にグローバルテーブルがあることを確認し、そのテーブルに新しい範囲を追加します。
  2. 値の範囲]フィールドで、チェック対象の列の数字または名前を指定します。
  3. ルール]エリアの近くで、[追加]ボタン を使用し新しいルールを追加してこの範囲と接続します。ウィンドウが自動的に[ルール]タブに移動し、新しいルールが選択されます。
  4. 制約]ピックリストボタン をクリックし、[ノードのルール]にカーソルを合わせて[有効なノード]を選択します。
  5. 失敗時]ピックリストボタン をクリックし、[ノードへの変換]を選択します。

テーブル検証ツールがテーブルを検証する際に、まず値がノードであるかどうかをチェックします。ノード以外のそれぞれの値では、ルールに一致せず、失敗時コールバックが呼び出されます。次に、コールバックがパスによってノードを探そうとします。

データが適切に検証されると、そのデータをシミュレーションモデルの一部として使用できる状態になります。詳細については、次のトピック「グローバルテーブルでデータを使用する」を参照してください。