データセット作成
新しいデータセットの作成
CSVファイル、ZIPパッケージ、またはバイナリファイルからデータセットを作成します。各フォーマットにはプロセスマイニング分析用の特定の列マッピングが必要です。
接続テスト
認証不要のPing
GET /api/{tenantId}/{projectId}/dataset/unauthorized-ping
認証不要のテストエンドポイント。
レスポンス
Ping Successful
認証済みPing
GET /api/{tenantId}/{projectId}/dataset/ping
APIアクセスを検証する認証済みPingエンドポイント。
レスポンス (200 OK)
Ping Successful (tenant id: {tenantId})
すべてのデータセットの一覧取得
GET /api/{tenantId}/{projectId}/dataset
指定されたプロジェクト内の全データセットを取得します。
レスポンス (200 OK)
{
"datasets": [
{
"datasetId": "550e8400-e29b-41d4-a716-446655440000",
"datasetName": "Purchase Order Process",
"datasetDescription": "Event log from SAP",
"projectId": "660e8400-e29b-41d4-a716-446655440000",
"caseIdColumnName": "CaseID",
"activityColumnName": "Activity",
"timeColumnName": "Timestamp",
"resourceColumnName": "Resource",
"beginTimeColumnName": null,
"expectedOrderColumnName": null,
"useDateOnlySorting": false,
"useOnlyEventColumns": false,
"dateCreated": "2024-01-15T10:30:00Z",
"dateModified": "2024-01-15T14:45:00Z",
"createdBy": "user@example.com",
"modifiedBy": "user@example.com"
}
]
}
CSVからのデータセット作成
POST /api/{tenantId}/{projectId}/dataset/csv
列マッピング付きのCSVファイルアップロードにより新しいデータセットを作成します。
リクエスト (multipart/form-data)
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
file |
file | 必須 | アップロードするCSVファイル(最大1GB) |
datasetName |
string | 必須 | 新しいデータセットの名前 |
caseIdColumn |
string | 必須 | ケースIDを含む列名 |
activityNameColumn |
string | 必須 | 活動名を含む列名 |
activityTimeColumn |
string | 必須 | タイムスタンプを含む列名 |
resourceColumn |
string | 任意 | リソース/担当者を含む列名 |
startTimeColumn |
string | 任意 | 活動開始時間を含む列名 |
cultureInfo |
string | 任意 | 解析に使用するカルチャ(デフォルト:"en-US") |
レスポンス (200 OK)
{
"datasetId": "550e8400-e29b-41d4-a716-446655440000",
"caseCount": 5200,
"eventCount": 150000,
"invalidValueCount": 0,
"skippedRowsCount": 0,
"errors": [],
"rowIssues": [],
"statusCode": 200
}
エラーレスポンス (422 Unprocessable Entity)
{
"errors": ["Column 'CaseID' not found in CSV file"],
"statusCode": 422
}
ZIPパッケージからのデータセット作成
POST /api/{tenantId}/{projectId}/dataset/package
データファイルを含むZIPパッケージから新しいデータセットを作成します。
リクエスト (multipart/form-data)
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
file |
file | 必須 | ZIPパッケージファイル(最大1GB) |
datasetName |
string | 必須 | 新しいデータセットの名前 |
cultureInfo |
string | 任意 | 解析に使用するカルチャ(デフォルト:"en-US") |
レスポンス (200 OK)
{
"datasetId": "550e8400-e29b-41d4-a716-446655440000",
"caseCount": 5200,
"eventCount": 150000,
"invalidValueCount": 0,
"skippedRowsCount": 0,
"errors": [],
"rowIssues": [],
"statusCode": 200
}
バイナリファイルからのデータセット作成
POST /api/{tenantId}/{projectId}/dataset/binary
列マッピング付きのバイナリ形式ファイルから新しいデータセットを作成します。
リクエスト (multipart/form-data)
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
file |
file | 必須 | アップロードするバイナリファイル(最大1GB) |
datasetName |
string | 必須 | 新しいデータセットの名前 |
caseIdColumn |
string | 必須 | ケースIDを含む列名 |
activityNameColumn |
string | 必須 | 活動名を含む列名 |
activityTimeColumn |
string | 必須 | タイムスタンプを含む列名 |
resourceColumn |
string | 任意 | リソース/担当者を含む列名 |
startTimeColumn |
string | 任意 | 活動開始時間を含む列名 |
レスポンス (200 OK)
CSV作成のレスポンスと同じ構造。
実装例
cURL - CSVアップロード
curl -X POST "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/dataset/csv" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-F "file=@event_log.csv" \
-F "datasetName=Purchase Orders" \
-F "caseIdColumn=CaseID" \
-F "activityNameColumn=Activity" \
-F "activityTimeColumn=Timestamp" \
-F "resourceColumn=User" \
-F "cultureInfo=en-US"
cURL - ZIPパッケージアップロード
curl -X POST "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/dataset/package" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-F "file=@data_package.zip" \
-F "datasetName=SAP Export" \
-F "cultureInfo=en-US"
Python
import requests
TENANT_ID = '12345678-1234-1234-1234-123456789012'
PROJECT_ID = '87654321-4321-4321-4321-210987654321'
BASE_URL = 'https://your-mindzie-instance.com'
class DatasetUploader:
def __init__(self, token):
self.headers = {'Authorization': f'Bearer {token}'}
def create_from_csv(self, file_path, dataset_name, case_id_col, activity_col, time_col,
resource_col=None, start_time_col=None, culture='en-US'):
"""CSVファイルからデータセットを作成します。"""
url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/dataset/csv'
with open(file_path, 'rb') as f:
files = {'file': (file_path, f, 'text/csv')}
data = {
'datasetName': dataset_name,
'caseIdColumn': case_id_col,
'activityNameColumn': activity_col,
'activityTimeColumn': time_col,
'cultureInfo': culture
}
if resource_col:
data['resourceColumn'] = resource_col
if start_time_col:
data['startTimeColumn'] = start_time_col
response = requests.post(url, headers=self.headers, files=files, data=data)
if response.ok:
return response.json()
else:
raise Exception(f'アップロードに失敗しました: {response.text}')
def create_from_package(self, file_path, dataset_name, culture='en-US'):
"""ZIPパッケージからデータセットを作成します。"""
url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/dataset/package'
with open(file_path, 'rb') as f:
files = {'file': (file_path, f, 'application/zip')}
data = {
'datasetName': dataset_name,
'cultureInfo': culture
}
response = requests.post(url, headers=self.headers, files=files, data=data)
if response.ok:
return response.json()
else:
raise Exception(f'アップロードに失敗しました: {response.text}')
def list_datasets(self):
"""プロジェクト内の全データセットを一覧表示します。"""
url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/dataset'
response = requests.get(url, headers=self.headers)
return response.json()
# 利用例
uploader = DatasetUploader('your-auth-token')
# CSVから作成
result = uploader.create_from_csv(
'event_log.csv',
'Purchase Order Process',
'CaseID',
'Activity',
'Timestamp',
resource_col='User'
)
print(f"データセット作成: {result['datasetId']}")
print(f"ケース数: {result['caseCount']}, イベント数: {result['eventCount']}")
# データセット一覧取得
datasets = uploader.list_datasets()
for ds in datasets['datasets']:
print(f"- {ds['datasetName']} ({ds['datasetId']})")
JavaScript/Node.js
const TENANT_ID = '12345678-1234-1234-1234-123456789012';
const PROJECT_ID = '87654321-4321-4321-4321-210987654321';
const BASE_URL = 'https://your-mindzie-instance.com';
class DatasetUploader {
constructor(token) {
this.token = token;
}
async createFromCsv(file, datasetName, caseIdCol, activityCol, timeCol, options = {}) {
const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/dataset/csv`;
const formData = new FormData();
formData.append('file', file);
formData.append('datasetName', datasetName);
formData.append('caseIdColumn', caseIdCol);
formData.append('activityNameColumn', activityCol);
formData.append('activityTimeColumn', timeCol);
formData.append('cultureInfo', options.culture || 'en-US');
if (options.resourceColumn) {
formData.append('resourceColumn', options.resourceColumn);
}
if (options.startTimeColumn) {
formData.append('startTimeColumn', options.startTimeColumn);
}
const response = await fetch(url, {
method: 'POST',
headers: { 'Authorization': `Bearer ${this.token}` },
body: formData
});
if (response.ok) {
return await response.json();
} else {
throw new Error(`アップロードに失敗しました: ${await response.text()}`);
}
}
async listDatasets() {
const url = `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/dataset`;
const response = await fetch(url, {
headers: { 'Authorization': `Bearer ${this.token}` }
});
return await response.json();
}
}
// 利用例(ブラウザ)
const uploader = new DatasetUploader('your-auth-token');
const fileInput = document.getElementById('csvFile');
fileInput.addEventListener('change', async (e) => {
const file = e.target.files[0];
const result = await uploader.createFromCsv(
file,
'My Dataset',
'CaseID',
'Activity',
'Timestamp',
{ resourceColumn: 'User' }
);
console.log(`作成済み: ${result.datasetId}`);
console.log(`ケース数: ${result.caseCount}, イベント数: ${result.eventCount}`);
});
レスポンスフィールド
| フィールド | タイプ | 説明 |
|---|---|---|
datasetId |
GUID | 作成されたデータセットのID |
caseCount |
integer | 取り込まれたユニークケース数 |
eventCount |
integer | 取り込まれたイベント総数 |
invalidValueCount |
integer | 無効な値の数 |
skippedRowsCount |
integer | エラーによりスキップされた行数 |
errors |
array | エラーメッセージのリスト |
rowIssues |
array | 行レベルの詳細な問題情報 |
statusCode |
integer | HTTPステータスコード |
ベストプラクティス
- 列名の検証: 列名は厳密に一致させる(大文字小文字を区別)
- カルチャ設定の確認: 日付/数値フォーマットに適切なカルチャを使用する
- 大容量ファイルの取り扱い: 1GBに迫るファイルはアップロード進行状況を監視する
- 行の問題の確認:
rowIssues配列でデータ品質の問題をチェックする - ユニークなデータセット名: データセット名はプロジェクト内で一意であること