8 EDQ構成APIの使用

EDQには、希望するプログラミング言語を使用して様々な構成タスクをプログラム的に実行できるRESTベースのインタフェースのセットが用意されています。

この章では、EDQサービスが次の場所にインストールされていると仮定します。

http://edqserver:8001/edq

この章では、これらのインタフェースと、そのインタフェースを使用して実行できる操作について詳細に説明します。次のトピックが含まれています:

プロジェクト用のRESTインタフェース

EDQプロジェクトを操作するためのRESTインタフェースは、次のとおりです

http://edqserver:8001/edq/config/projects

このインタフェースでは、次のタスクを実行できます。

EDQプロジェクトのリストの取得

現在のEDQインストールで使用可能なすべてのプロジェクトのリストを取得するには、次のコードに示すとおり、EDQプロジェクト用のRESTインタフェースでHTTP GET操作を実行する必要があります。

GET http://edqserver:8001/edq/config/projects

このコードが正常に実行されると、次のようにプロジェクトのリストがJSON形式で生成されます。

[  
   {  
      "id":10,
      "name":"My Project"
   },
   {  
      "id":12,
      "name":"Scratch Project"
   }
]

プロジェクトの作成

新しいプロジェクトを作成するには、作成対象のプロジェクトを記述するJSONオブジェクトを作成し、HTTP POSTを使用してRESTコールのリクエスト本体でそれを送信する必要があります。

次に例を示します。

POST http://edqserver:8001/edq/config/projects

{ "name" : "Profile Customer Names" , 
  "description" : "Profile my customers" }

このコードでは、次のようなレスポンス本体とともに"OK"タイプのレスポンスが戻されます。

{"id":14,"name":"Profile Customer Names"}

ただし、プロジェクトの作成中にエラーが発生すると、次のようなエラー・メッセージとともに"500 Internal Server Error"タイプのレスポンスが生成されます。

"Profile Customer Names" already exists (Code: 205,130)

プロジェクトの削除

プロジェクトを削除するには、RESTインタフェースでHTTP DELETEをコールし、問合せパラメータとして削除対象のプロジェクトを指定する必要があります。

削除対象のプロジェクトを指定するには、次の2つの方法があります。

  • pid=<NN>を使用したIDによる方法

  • pname=<Name>を使用した名前による方法

IDを使用してプロジェクトを削除するには、次のようにします。

DELETE http://edqserver:8001/edq/config/projects?pid=14

名前を使用してプロジェクトを削除するには、次のようにします。

DELETE http://edqserver:8001/edq/config/projects?pname=Profile%20Customer%20Names

どちらの方法でも、結果は次のように文字列になります。

Project Profile Customer Names deleted

無効なプロジェクトが指定されると、次のように適切な文字列メッセージとともに406 'Not Acceptable'タイプのレスポンスが戻されます。

Bad project ID "14" (Code: 205,454)

または

No project named "Profile Customer Names" (Code: 205,453)

データ・ストア用のRESTインタフェース

次のインタフェースを使用して、EDQのデータ・ストアを問い合せて操作できます。

http://edqserver:8001/edq/config/datasources

このインタフェースでは、次のタスクを実行できます。

データ・ストアのリストの取得

データ・ストアのリストを取得するには、有効なプロジェクト名を使用してインタフェースをコールします。

次に例を示します。

GET http://edqserver:8001/edq/config/datasources?pid=14

成功すると、レスポンス本体のデータ・ストアのリストとともにOKレスポンスが戻されます。

次に例を示します。

[  
   {  
      "client":false,
      "id":36,
      "name":"Individuals",
      "properties":[  
         {  
            "name":"quote",
            "value":"\""
         },
         {  
            "name":"encoding",
            "value":"ISO-8859-1"
         },
         {  
            "name":"file",
            "value":"Customer/customerindividuals.csv"
         },
         {  
            "name":"cols",
            "value":""
         },
         {  
            "name":"project",
            "value":"59"
         },
         {  
            "name":"hdr",
            "value":"1"
         },
         {  
            "name":"usepr",
            "value":"0"
         },
         {  
            "name":"skip",
            "value":""
         },
         {  
            "name":"sep",
            "value":","
         }
      ],
      "species":"servertxt"
   }
]
 

データ・ストアの作成

データ・ストアを作成するには、データ・ストアを記述するJSONオブジェクトを作成し、データ・ストアを所有するプロジェクトを名前またはIDで指定してそれをエンドポイントに送信(POST)する必要があります。

次に例を示します。

ランディング領域に配置されたサーバーベースの.csvファイル。

POST http://edqserver:8001/edq/config/datasources?pid=14
{  
   "client":false,
   "name":"Individuals",
   "properties":[  
      {  
         "name":"quote",
         "value":"\""
      },
      {  
         "name":"encoding",
         "value":"ISO-8859-1"
      },
      {  
         "name":"file",
         "value":"Customer/customerindividuals.csv"
      },
      {  
         "name":"hdr",
         "value":"1"
      },
      {  
         "name":"usepr",
         "value":"0"
      },
      {  
         "name":"sep",
         "value":","
      }
   ],
   "species":"servertxt"
}

サーバーベースのOracleスキーマ:

POST http://edqserver:8001/edq/config/datasources?pid=14
{  
   "client":false,
   "name":"Staging",
   "properties":[  
      {  
         "name":"service",
         "value":"sid"
      },
      {  
         "name":"sid",
         "value":"orcl"
      },
      {  
         "name":"user",
         "value":"staging"
      },
      {  
         "name":"port",
         "value":"1521"
      },
      {  
         "name":"password",
         "value":"staging"
      },
      {  
         "name":"host",
         "value":"localhost"
      }
   ],
   "species":"oracle"
}

成功すると、次の例に示すとおり、データ・ストアの名前およびIDとともにOKレスポンスが戻されます。

{"id":42,"name":"Staging"}

speciesパラメータの値は、プロジェクトで使用されるデータ・ストアのタイプに応じて異なります。たとえば、Oracle Databaseを使用している場合、speciesの値は"oracle"になります。各speciesパラメータには独自のプロパティ・セットがあります。

次の表は、speciesが"oracle"のプロパティを示しています。

プロパティ タイプ 必須 説明

host

String

はい

データベースをホストするマシン

port

Number

はい

データベースのポート番号

sid

String

はい

データベース識別子

service

sidまたはsrvの選択

はい

前述のデータベース識別子がSIDであるかサービス(srv)名であるか

user

String

はい

ログインするユーザー

password

String

いいえ

ユーザーのパスワード

schema

String

いいえ

使用するスキーマ(通常は空のまま)

次の表は、speciesが"servertext"のプロパティを示しています。

プロパティ タイプ 必須 説明

file

String

はい

ランディング領域のファイルの名前と場所

userpr

Boolean

はい

プロジェクト固有のランディング領域の使用

hdr

Boolean

はい

最初の行をヘッダーとして処理

sep

String

いいえ

フィールド・デリミタ

quote

Choice

いいえ

クォート文字

cols

Integer

いいえ

読み取る列の数

encoding

String

はい

テキストの文字エンコーディング

skip

Integer

いいえ

開始時にスキップする行の数

注意:

ブール型では、falseの場合は0を、trueの場合は1を使用します。

引用符の値には、二重引用符として""\""、一重引用符として"'"、または空の値として""を指定する必要があります。

次の表は、speciesが"other" (JDBC接続を使用)のプロパティを示しています。

プロパティ タイプ 必須 説明

driver

String

はい

JDBCドライバのJavaクラス

url

String

はい

データベースのアドレス

user

String

いいえ

ログインするユーザー

password

String

いいえ

ユーザーのパスワード

データ・ストアの削除

データ・ストアを削除するには、次のようにデータ・ストアIDを指定するか、有効なプロジェクト(名前またはIDで特定)とデータストア名を指定してエンドポイントでHTTP DELETEをコールします。

DELETE http://edqserver:8001/edq/config/datasources?id=42

または

DELETE http://edqserver:8001/edq/config/datasources?pid=14&name=Staging

削除に成功すると、レスポンス本体なしでOKレスポンスが戻されます。

スナップショット用のRESTインタフェース

スナップショット用のRESTインタフェースは、次のとおりです。

http://edqserver:8001/edq/config/snapshots

このダイアログを使用すると、次のタスクを実行できます。

スナップショットのリストの取得

スナップショットのリストを取得するには、次のように有効なプロジェクトを指定します。

GET http://edqserver:8001/edq/config/snapshots?pid=14

または

GET http://edqserver:8001/edq/config/snapshots?pname=Profile%20Customer%20Names

成功すると、レスポンス本体のスナップショットのリストとともにOKレスポンスが戻されます。

次に例を示します。

[  
   {  
      "columns":[  
         "TITLE",
         "FULLNAME",
         "GIVENNAMES",
         "FAMILYNAME",
         "NAMETYPE",
         "PRIMARYNAME",
         "ADDRESS1",
         "ADDRESS2",
         "ADDRESS3",
         "ADDRESS4",
         "CITY",
         "STATE",
         "POSTALCODE"
      ],
      "datasource":"Individuals",
      "name":"Individuals",
      "table":"customerindividuals.csv"
   }
]

スナップショットの作成

スナップショットを作成するには、スナップショットを記述するJSONオブジェクトを作成し、作成先のプロジェクトを指定する必要があります。

次に例を示します。

POST http://edqserver:8001/edq/config/snapshots?pid=14
{  
   "name":"Individuals",
   "description":"Customer data",
   "datasource":"Individuals",
   "table":"customerindividuals.csv",
   "columns":[  
      "TITLE",
      "FULLNAME",
      "GIVENNAMES",
      "FAMILYNAME",
      "NAMETYPE",
      "PRIMARYNAME",
      "ADDRESS1",
      "ADDRESS2",
      "ADDRESS3",
      "ADDRESS4",
      "CITY",
      "STATE",
      "POSTALCODE"
   ],
   "sampling":{  
      "number":100,
      "offset":0,
      "ordering":"ascending",
      "count":"true"
   }
}

成功すると、レスポンス本体のスナップショットIDとともにOKレスポンスが戻されます。

次に例を示します。

{"id":68,"name":"Individuals"}

スナップショットの削除

スナップショットを削除するには、スナップショットIDを指定するか、有効なプロジェクトとスナップショット名を指定する必要があります。

次に例を示します。

DELETE http://edqserver:8001/edq/config/snapshots?id=68

または

DELETE http://edqserver:8001/edq/config/snapshots?pid=14&name=Individuals

または

DELETE http://edqserver:8001/edq/config/snapshots?pname=Profile%20Customer%20Names&name=Individuals

指定したスナップショットの削除に成功すると、次のようなレスポンス本体の文字列メッセージとともにOKレスポンスが戻されます。

Snapshot Individuals deleted

プロセス用のRESTインタフェース

EDQプロセス用のインタフェースは次のとおりです。

http://edqserver:8001/edq/config/processes

このインタフェースを使用して、次のタスクを実行できます。

次のサブレベル・インタフェースでは、単純なプロファイリング・プロセスを作成できます。

http://edqserver:8001/edq/config/processes/simpleprocess

詳細は、「単純なプロセスの作成」を参照してください。

プロセスのリストの取得

プロジェクトのプロセスのリストを取得するには、有効なプロジェクト名を使用してプロセス・インタフェースでHTTP GETをコールする必要があります。

例:

GET http://edqserver:8001/edq/config/processes?pid=14

または

GET http://edqserver:8001/edq/config/processes?pname=Profile%20Customer%20Names

プロセスのリストとともにOKレスポンスが戻されます。

例:

[{"name":"Profile Names","id":31}]

リクエストに失敗すると、エラーを説明するレスポンス本体の文字列とともに、404 'Not Found'または500 'Internal Server Error'というエラー・レスポンスが戻されます。

プロセスの削除

プロセスを削除するには、プロセスIDを指定するか、プロジェクトIDまたはプロジェクト名とプロセス名を指定します。次に例を示します。

DELETE http://edqserver:8001/edq/config/processes?id=31

または

DELETE http://edqserver:8001/edq/config/processes?pid=14&name=Profile%20Names

または

DELETE http://edqserver:8001/edq/config/processes?pname=Profile%20Customer%20Names&name=Profile%20Names

削除に成功すると、次の例に示すとおり、文字列メッセージおよびレスポンス本体とともにOKレスポンスが戻されます。

Process Profile Names deleted

削除に失敗すると、レスポンス文字列とともに次のエラーのいずれかが戻されます。

  • 404 「見つかりません」

  • 500 「内部サーバー・エラー」

単純なプロセスの作成

インタフェースでは、現在、単純なプロファイリング・プロセスの作成のみがサポートされます。単純なプロセスを作成するには、作成対象のプロセスを記述するJSONオブジェクトを作成し、作成先のプロジェクトを指定する必要があります。HTTP POST操作を使用して、この情報をインタフェースに送信します。

次に例を示します。

POST http://edqserver:8001/edq/config/processes/simpleprocess?pid=14
{  
   "name":"Profile Names",
   "description":"Profile Individuals Names",
   "reader":{  
      "name":"Read from Individuals",
      "stageddata":"Individuals"
   },
   "processors":[  
      {  
         "name":"Do Quickstats",
         "type":"dn:quickstatsprofiler",
         "columnlist":[  
            "GivenNames",
            "FamilyName"
         ]
      },
      {  
         "name":"Do Frequency Profiling",
         "type":"dn:attributefrequencycountsprofiler"
      }
   ]
}

単純なプロセスの作成に成功すると、レスポンス本体のプロセスの名前およびIDとともに、OKレスポンスが戻されます。

次に例を示します。

{"id":33,"name":"Profile Names"}

次の場合はエラー・レスポンスが生成されます。

  • 404 'Not Found': プロジェクトが存在しない場合

  • 400 'Bad Request': JSONオブジェクトの形式が不正な場合

  • 500 'Internal Server Error': 作成中に、エラーを説明するレスポンス本体の文字列とともにサーバー・エラーが発生した場合。

次の表は、サポートされるプロセッサの完全なリストを示しています。

プロセッサ タイプ

クイック統計プロファイラ

dn:quickstatsprofiler

データ型プロファイラ

dn:datatypesprofiler

最大/最小プロファイラ

dn:maxandminprofiler

長さプロファイラ

dn:lengthprofiler

レコード完全性プロファイラ

dn:recordcompletenessprofiler

文字プロファイラ

dn:characterprofiler

頻度プロファイラ

dn:attributefrequencycountsprofiler

パターン・プロファイラ

dn:attributepatternsprofiler

ジョブ用のRESTインタフェース

/config/jobsインタフェースでは、EDQジョブに対して次のタスクを実行できます。

このインタフェースのURLは、次のようになります。

http://edqserver:8001/edq/config/jobs

もう1つのRESTインタフェース/jobsでは、次のタスクを実行できます。

このインタフェースのURLは、次のようになります。

http://edqserver:8001/edq/jobs

ジョブのリストの取得

HTTP GETを使用してプロジェクトのジョブのリストを取得できます。問合せパラメータとして少なくとも1つのプロジェクト(2つ以上のプロジェクトも可)を指定する必要があります。

プロジェクトは、次の例に示すとおり、問合せパラメータのpidまたはpnameを使用して指定できます。

GET http://edqserver:8001/edq/config/jobs?pid=14

または

GET http://edqserver:8001/edq/config/jobs?pname=Profile%20Customer%20Names

この操作に対するレスポンスにより、次の例に示すとおり、特定のプロジェクトのすべてのジョブがリストされます。

[  
   {  
      "id":99,
      "name":"Profile Names Job"
   },
   {  
      "id":98,
      "name":"Profile Individuals Job"
   }
]

ジョブの削除

ジョブを削除するには、有効なジョブIDを指定するか、有効なプロジェクト(問合せパラメータのいずれかを使用)と有効なジョブ名を指定する必要があります。

ジョブIDでジョブを削除するには、次のようにします。

DELETE http://edqserver:8001/edq/config/jobs?id=99

ジョブ名でジョブを削除するには、次のようにします。

DELETE http://edqserver:8001/edq/config/jobs?pid=14&name=Profile%20Names%20Job

または

DELETE http://edqserver:8001/edq/config/jobs?pname=Profile%20Customer%20Names&name=Profile%20Names%20Job

ジョブの削除に成功すると、削除を確認するメッセージが表示されます。

ジョブProfile Names Jobが削除されました

単純なジョブの作成

単純なジョブには、1つのフェーズと1つのプロセスが含まれます。単純なジョブを作成するには、そのジョブを所有する有効なプロジェクトを(問合せパラメータのいずれかを使用して)指定する必要があります。また、作成対象のジョブを記述するJSONオブジェクトも作成する必要があります。

次に例を示します。

POST http://edqserver:8001/edq/config/jobs/simplejob?pid=14
{ 
"name" : "Profile Names Job" , 
"process" : "Profile Names" ,
"description" : "Profile Customer Names"
"resultsdrilldown" : "none"
}

属性resultsdrilldownには、nonesamplelimitedallのいずれかの値を使用できます。ただし、samplelimitedの値は、同じ意味です。

ジョブの実行

/jobs/runインタフェースでは、HTTP POSTを使用して、指定したジョブを実行できます。必須パラメータは、プロジェクト名またはプロジェクトIDとジョブ名です。オプションで、実行ラベルおよびオーバーライドを指定できます。

次の例は、プロジェクト"Profile Customer Name"の"Real-time Start All"というジョブを実行する際のインタフェースのURL表現を示しています。

POST http://edqserver:8001/edq/jobs/run
{  
   "project":"Profile Customer Name",
   "job":"Real-time Start All",
   "overrides":[  
      {  
         "name":"a",
         "value":"b"
      },
      {  
         "name":"c",
         "value":"d"
      }
   ]
}

このリクエストに対するJSONレスポンスは、次のようになります。

{
"executionID": 2
"runeverywhere": false
}

この例では、ジョブ"Real-time Start All"により、"runeverywhere"の値がfalseとして返されているため、このジョブは1つの場所でのみ実行できます。このような場合、ジョブに対してexecutionIDが戻されます。このexecutionIDを使用して、ジョブを取り消したり、ジョブのステータスを問い合せることができます。

ただし、"runeverywhere"の値がtrueの場合、JSONレスポンスでは"jobtype"のみが戻されます。"runeverywhere"ジョブでは、取消しおよび問合せのコールはサポートされません。

実行中のジョブの取消し

実行中のジョブを取り消すには、HTTP POST操作を使用します。インタフェースのURLは、次のようになります。

POST http://edqserver:8001/edq/jobs/cancel

取消し対象のジョブのexecutionIDのみが必要です。次の例では、executionID 12のジョブの取消しを示します。

{ 
"executionID": 12, 
"type" : "immediate" 
}

"type"パラメータでは次のオプションを使用できます。

  • immediate: このオプションは、可能なかぎり早くジョブを取り消します。

  • keepresults: このオプションは、ジョブを取り消しますが、それまでに生成された結果は保持します。

  • shutdown: このオプションは、Webサービスを実行しているジョブを取り消すか、停止するために使用します。

ジョブの取消しに成功すると、レスポンスは戻されません。取消しに失敗すると、"404 File Not Found"や"Internal Server Error"などのHTTPエラーが表示されます。

ジョブのステータスの取得

個々のジョブのステータスを取得するには、URLにexecutionIDを渡します。URLは次のようになります。

GET http://edqserver:8001/edq/jobs/status?xid=executionID

たとえば、ジョブ"Real-time Start All"の実行IDが14の場合、URLは次のようになります。

GET http://edqserver:8001/edq/jobs/status?xid=14

JSONレスポンスは次のようになります。

{   "complete": true,   
   "endtime": "2016-04-20T08:45:22+01:00",
   "executionid": 14,
   "job": "Real-time START ALL",
   "project": "Profile Customer Name",
   "server": "edqserver",
   "starttime": "2016-04-20T08:44:48+01:00",
   "status": "finished"}

この例で、"Real-time Start All"ジョブは、他のジョブを起動します。プロジェクトのすべてのジョブが起動されると、executionID 14のステータスは、finishedを示します。ただし、"Real-time Start All"ジョブによって起動されたジョブは、引き続きrunningのステータスを示すことがあります。

実行中のすべてのジョブに関する詳細の取得

プロジェクトで実行中のすべてのジョブのステータスは、次のようなURLで表現される/jobs/runningインタフェースを使用して取得できます。

GET http://edqserver:8001/edq/jobs/running

次の例では、JSON形式の出力を示します。

{
      "complete": false,
      "executionid": 4,
      "job": "Real-time Individual Clean",
      "project": "Profile Customer Name",
      "server": "edqserver",
      "starttime": "2016-04-19T10:05:30.74+01:00",
      "status": "running"
   },
      {
      "complete": false,
      "executionid": 8,
      "job": "Real-time Address Match",
      "project": "Profile Customer Name",
      "server": "edqserver",
      "starttime": "2016-04-19T10:06:11.755+01:00",
      "status": "running"
   },
      {
      "complete": false,
      "executionid": 5,
      "job": "Real-time Entity Clean",
      "project": "Profile Customer Name",
      "server": "edqserver",
      "starttime": "2016-04-19T10:05:32.778+01:00",
      "status": "running"
   },
      {
      "complete": false,
      "executionid": 6,
      "job": "Real-time Address Clean",
      "project": "Profile Customer Name",
      "server": "edqserver",
      "starttime": "2016-04-19T10:05:32.782+01:00",
      "status": "running"
   }

オプションで、プロジェクト名、ジョブ名、実行ラベルなどの他の問合せパラメータを指定できます。実行ラベルのないジョブの場合、実行ラベル・パラメータを省略して、実行ラベルのない空のフィルタ・ジョブとして設定します。この場合のURLは、次のようになります。

/jobs/running?[project=project[&job=job][&runlabel=]

参照データ用のRESTインタフェース

参照データは、プロジェクト内に存在することも、システム・レベルのすべてのプロジェクトの外部に存在することもあります。システム・レベルの参照データを参照するには、プロジェクトIDを0に(pid=0)指定します。

参照データ用のインタフェースは、次のとおりです。

http://edqserver:8001/edq/config/referencedata

参照データのコンテンツ用のインタフェースは、次のとおりです。

http://edqserver:8001/edq/config/referencedata/contents

このインタフェースを使用して、次のタスクを実行できます。

参照データのリストの取得

システム・レベルで定義されているすべての参照データのリストを取得するには、次のパラメータのいずれかを使用してプロジェクトを指定します。

pid = 0による方法:

GET http://edqserver:8001/edq/config/referencedata?pid=0

pnameによる方法:

GET http://edqserver:8001/edq/config/referencedata?pname=Profile%20Customer%20Names

参照データを表すJSONオブジェクトのリストが戻されます。出力は、次のようになります。

[  
   {  
      "activerows":2,
      "category":"charactertokeymap",
      "columns":[  
         {  
            "key":true,
            "name":"Name",
            "type":"STRING",
            "unique":true
         },
         {  
            "name":"Value",
            "type":"STRING",
            "value":true
         }
      ],
      "id":39,
      "name":"Tokens",
      "totalrows":2
   }
]

参照データのコンテンツの取得

参照データのコンテンツをリストするには、参照データのコンテンツ用のインタフェースを使用します。有効なプロジェクトを指定するか、システム・レベルではpid=0を使用する必要があります。

次に例を示します。

GET http://edqserver:8001/edq/config/referencedata/contents?pid=0&id=40

または

GET http://edqserver:8001/edq/config/referencedata/contents?pid=0&name=ShortNameMap

これにより、次のコード・スニペットに示すとおり、参照データの行に関する情報が戻されます。

{  
   "activerows":4,
   "columns":[  
      {  
         "key":true,
         "name":"ShortName",
         "type":"STRING",
         "unique":true,
         "value":true
      },
      {  
         "key":true,
         "name":"LongName",
         "type":"STRING",
         "value":true
      }
   ],
 
"description":"Map short names to long names",
   "id":43,
   "name":"ShortNameMap",
   "rows":[  
      {  
         "data":[  
            "Jeff",
            "Jeffrey"
         ]
      },
      {  
         "data":[  
            "Jon",
            "Jonathan"
         ]
      }
   ],
   "totalrows":4
}

参照データの作成

参照データを作成するには、参照データを記述するJSONオブジェクトを作成し、pid=0を指定するか(システム・レベルの場合)、有効なプロジェクト名を指定してそれをインタフェースに送信する必要があります。

次に例を示します。

POST 
http://edqserver:8001/edq/config/referencedata?pname=Profile%20Customer%20Names

{ 
"name" : "ShortNameMap",
"description" : "Map short names to long names",
"columns":
        [
            {
                "key": true,
                "name": "ShortName",
                "type": "STRING",
                "unique": true,
                "value": true
            },
            {
                "key": true,
                "name": "LongName",
                "type": "STRING",
                "value": true
            }
    ],
"rows":
    [
        {
            "data":
            [
                "Jeff",
                "Jeffrey"     
            ]
        },
        {
            "data":
            [
                "Jon",
                "Jonathan"
            ]
        }
  ]
}

作成に成功すると、次のようなレスポンスが戻されます。

{"id":40,"name":"ShortNameMap"}

参照データの削除

参照データを削除するには、有効な参照データIDを指定するか、有効なプロジェクト(システム・レベルの場合はpid=0を含む)と有効な参照データ名を指定して、参照データ・インタフェースでHTTP DELETEをコールする必要があります。

参照データIDで削除するには、次のようにします。

DELETE http://edqserver:8001/edq/config/referencedata?id=40

参照データ名で削除するには、次のようにします。

DELETE http://edqserver:8001/edq/config/referencedata?pid=0&name=ShortNameMap

削除に成功すると、レスポンスで次のような文字列メッセージが戻されます。

Reference data ShortNameMap deleted

Webサービス用のRESTインタフェース

Webサービス用のインタフェースは、次のとおりです。

http://edqserver:8001/edq/config/webservices

これにより、それぞれ取得、送信または削除操作をコールして、次のタスクを実行できます。

Webサービスのリストの取得

Webサービス・インタフェースでHTTP GET操作を使用して、有効なプロジェクトに対して定義されたWebサービスのリストを取得できます。Webサービスのリストを取得するには、pidまたはpnameパラメータを使用して有効なプロジェクトを指定します。

次に例を示します。

GET http://edqserver:8001/edq/config/webservices?pid=14&pid=20

コールに成功すると、レスポンス本体の入力および出力インタフェースとともに、Webサービスのリストが戻されます。

[  
   {  
      "id":1,
      "inputs":{  
         "attributes":[  
            {  
               "name":"Name",
               "type":"STRING"
            }
         ],
         "multirecord":false
      },
      "name":"Long Names",
      "outputs":{  
         "attributes":[  
            {  
               "name":"LongName",
               "type":"STRING"
            }
         ],
         "multirecord":false
      }
   }
]

Webサービスの作成または更新

適切なJSONオブジェクトを作成してWebサービスを作成および更新し、Webサービス・インタフェースに送信(POST)できます。

Webサービスを作成するには、次の例に示すとおり、名前またはIDで有効なプロジェクトを指定する必要があります。

POST http://edqserver:8001/edq/config/webservices?pid=14

{  
   "name":"Name Gender",
   "inputs":{  
      "attributes":[  
         {  
            "name":"Name",
            "type":"STRING"
         }
      ],
      "multirecord":false
   },
   "outputs":{  
      "attributes":[  
         {  
            "name":"Gender",
            "type":"STRING"
         }
      ],
      "multirecord":false
   }
}

成功すると、Webサービスの名前とIDがレスポンス本体で戻されます。

例:

{"id":4,"name":"Name Gender"}

Webサービスを更新するには、構造が同一で、既存のWebサービスを識別するための追加のID属性が含まれるJSONオブジェクトが必要です。更新の場合、プロジェクトは指定しません。

例:

POST http://edqserver:8001/edq/config/webservices

{  
   "id":4,
   "name":"Name Gender",
   "inputs":{  
      "attributes":[  
         {  
            "name":"First Name",
            "type":"STRING"
         },
         {  
            "name":"Last Name",
            "type":"STRING"
         }
      ],
      "multirecord":false
   },
   "outputs":{  
      "attributes":[  
         {  
            "name":"Gender",
            "type":"STRING"
         }
      ],
      "multirecord":false
   }
}

成功すると、次の例に示すとおり、Webサービスの名前とIDがレスポンス本体で戻されます。

{"id":4,"name":"Name Gender"}

Webサービスの削除

Webサービスを削除するには、Webサービス・インタフェースでHTTP DELETEをコールします。WebサービスIDを指定するか、有効なプロジェクト(名前またはIDで特定)とWebサービス名を指定します。

次に例を示します。

DELETE http://edqserver:8001/edq/config/webservices?id=5

または

DELETE http://edqserver:8001/edq/config/webservices?pid=14&name=Name%20Gender

成功すると、レスポンス本体なしでOKレスポンスが戻されます。

例: 外部アプリケーションによるプロファイリング

EDQを使用して、外部アプリケーションでOracle Databaseの表のデータをプロファイリングする必要があるシナリオを検討します。この場合、RESTベースのAPIを使用してプログラム的にこの表をプロファイリングできます。この例では、CustomerDBデータベースのCUSTOMERS表を使用します。

プロファイリング・ジョブを生成してCUSTOMERS表に対して実行するには、次のタスクを実行します。

  1. 次のURLを使用してプロジェクトを作成します。

    POST http://edqserver:8001/edq/config/projects

    プロジェクト名(pname)は、"Profile Customer"です。JSONコードは次のとおりです。

    {
    "name":"Profile Customer", 
    "description": "Profiling customers in the CUSTOMERS table"
    }
    
  2. 次のURLを使用してOracle DatabaseのCustomerDBを使用するデータ・ストアを作成します。

    POST http://edqserver:8001/edq/config/datasources?pid=4

    データ・ストアを作成するためのJSONコードの例は、次のとおりです。

    {  
       "client":false,
       "name":"CustomersDB",
       "properties":[  
          {  
             "name":"service",
             "value":"sid"
          },
          {  
             "name":"sid",
             "value":"orcl"
          },
          {  
             "name":"user",
             "value":"CRM"
          },
          {  
             "name":"port",
             "value":"1521"
          },
          {  
             "name":"password",
             "value":"welcome123"
          },
          {  
             "name":"host",
             "value":"localhost"
          }
       ],
       "species":"oracle"
    }

    注意:

    プロジェクト"Profile Customer"のpidまたはプロジェクトIDを確認するには、次のURLでHTTP GET操作を使用します。

    GET http://edqserver:8001/edq/config/projects

  3. 次のURLを使用してスナップショットを作成します。

    POST http://edqserver:8001/edq/snapshots?pid=4

    スナップショットを作成するためのJSONコードは、次のとおりです。

    {  
       "name":"CustomersDB.Customers",
       "description":"Customer details",
       "datasource":"CustomersDB",
       "table":"Customers",
       "columns":[  
          "ID",
          "FULLNAME",
          "GIVENNAME",
          "FAMILYNAME",
          "Street",
          "City",
          "State",
          "PostalCode",
          "State",
          "Phone",
          "Cell",
          "Work",
          "eMail",
          "DoB",
          "Gender",
          "Active",
          "CreditLimit",
          "StartDate",
          "EndDate"
       ],
       "sampling":{  
          "number":100,
          "offset":0,
          "ordering":"ascending",
          "count":"true"
       }
    }
    

    この結果は次のように表示されます。

    {
       "id": 85,
       "name": "CustomersDB.Customers"
    }
    

    "CustomersDB.Customers"という名前のスナップショットが作成されます。

  4. 次のURLを使用して単純なプロセスを作成します。

    POST http://edqserver:8001/edq/config/processes/simpleprocess?pid=4

    この例では、どちらも名前フィールドのみをプロファイリングするQuickstats ProfilerおよびFrequency Profilerで単純なプロセスを作成します。これを行うには、次のJSONの例を使用します。

    {  
       "name":"Profile Names",
       "description":"Profile Customer Names",
       "reader":{  
          "name":"Read from Customers",
          "stageddata":"Connection to Customers"
       },
       "processors":[  
          {  
             "name":"Do Quickstats",
             "type":"dn:quickstatsprofiler",
             "columnlist":[  
                "GIVENNAME",
                "FAMILYNAME"
             ]
          },
          {  
             "name":"Do Frequency Profiling",
             "type":"dn:attributefrequencycountsprofiler"
          }
       ]
    }
    

    このリクエストに対するレスポンスは次のとおりです。

    {
       "id": 267,
       "name": "Profile Names"
    }
    
  5. 次のURLを使用して単純なジョブを作成します。

    POST http://edqserver:8001/edq/jobs/simplejob?pid=4

    {  
       "name":"Profile Customer Job",
       "process":"Profile Names",
       "description":"Profiling Customer Names",
       "resultsdrilldown":"none"
    }
    

    このリクエストに対するレスポンスは次のとおりです。

    {
      "id": 211,
      "name": "Profile Customer Job"
    }
    
  6. 次のURLを使用してジョブを実行します。

    POST http://edqserver:8001/edq/jobs/run

    ジョブ"Profile Customer Job"を実行してからプロファイリング・プロセスを実行するためのJSONコードは、次のとおりです。

    {
    "project":"Profile Customer",
    "job":"Profile Customer Job"
    }
    

    レスポンスは次のとおりです。

    {
       "executionID": 20,
       "runeverywhere": false
    }
    

このジョブの実行後、次のURLを使用してジョブの実行のステータスを確認できます。

GET http://edqserver:8001/edq/jobs/status?xid=20

このURLを実行すると、次のコードに示すとおり、ジョブのステータスが表示されます。

{
   "complete": true,
   "endtime": "2016-04-29T14:05:41+01:00",
   "executionid": 1,
   "job": "Profile Customer Job",
   "project": "Profile Customer",
   "server": "edq_server1",
   "starttime": "2016-04-29T14:05:38+01:00",
   "status": "finished"
}

必要な場合は、次のURLを使用してジョブを取り消すことができます。

POST http://edqserver:8001/edq/jobs/cancel

ジョブを取り消すJSONコードは、次のとおりです。

{ 
"executionID": 12345, 
"type" : "immediate" 
}

これにより、結果を保存することなく、ジョブは即座に取り消されます。"type"で使用できる他のオプションは、「実行中のジョブの取消し」を参照してください。

EDQディレクタにログインして、実行に成功したプロファイリング・ジョブの結果を表示するには、次のURLを使用します。

http://edqserver:8001/edq/blueprints/director/jnlp?projectid=1&processid=1&processornum=2

projectidprocessidは同じで、対応するREST APIコールを使用して生成され、processornum値には2 (リーダー後の最初のプロセッサ)を設定します。

このURLにより、ジョブの最初のプロファイリング・プロセッサがフォーカスされたディレクタUIが表示されるため、その結果を即座に確認できます。

外部アプリケーションには、生成されたジョブを削除するオプションを含めて、関連する削除コールに対するコールを実行できます。この最も簡単なバージョンでは、プロジェクト全体を削除できます。プロジェクトの削除の詳細は、「プロジェクトの削除」を参照してください。