cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Create Dataset via REST API fails

SOLVED
Contributor

Create Dataset via REST API fails

Hi everyone,

I'm using REST API to automate my application with TW Analytics. I've succesfully uploaded CSV and JSON files to AnalyticsUploadStorage using CreateTextFile service. However when creating a dataset with the uploaded files using /Thingworx/Things/AnalyticsServer_Thing_DataThing/Services/CreateDataset which gives 200 OK, but the job fails with following error in the GetJobInfo api response: ProtocolException: The server failed to respond with a valid HTTP response

TW_cd_rest_fails.png

 

Creating dataset through Analytics Builder works fine but I require REST API for automating. When I look at the call that the AnalyticsBuilder is using, its the CreateDatasetAMS service of the TW_ML_Helper Thing. Using that in postman also gives 200 OK but the subsequent GetJobInfo returns with the same error.

Can anyone tell me what's wrong here...

1 ACCEPTED SOLUTION

Accepted Solutions

Re: Create Dataset via REST API fails

Hi

 

I was talking to the DevZone team but it appears that the hosted instances are not meant to be used with Analytics as there are some known issues.

Instead all the Analytics Quickstart Guides point to use the Analytics Trial Edition (ATE) that is downloadable from  https://developer.thingworx.com/resources/downloads .

 

I understand that it used to work but unfortunately there is no support from the DevZone team for the analytics component on the hosted instances.

So the best way forward for you is to download and install the ATE.

 

Hope this helps

Kind rgeards

Christophe

 

View solution in original post

8 REPLIES 8

Re: Create Dataset via REST API fails

Hi 

 

Could you show your CreateDataset post request body ?

Also the ThingWorx Analytics log files https://www.ptc.com/en/support/article?n=CS268761

If possible post also the csv and json file you are uploading.

 

Thanks

Christophe

Re: Create Dataset via REST API fails

Hi @cmorfin,

Here are the two POST request:

https://<serverIp>/Thingworx/Things/AnalyticsServer_Thing_DataThing/Services/CreateDataset?appKey=<appKey>

Request Body:

{
    "csvURI": "thingworx://AnalyticsUploadStorage/UptimeDowntimeData/sample_csv1.csv",
    "csvHasHeaders": true,
    "metadataFileURI": "thingworx://AnalyticsUploadStorage/UptimeDowntimeData/sample_csv1_metadata.json"
}

AND

https://<serverIP>/Thingworx/Things/TW_ML_Helper/Services/CreateDatasetAMS?appKey=<appKey>

(got this API from browser console)

Request Body:

{
    "AnalyticsServerRuntimeInstance": "AnalyticsServerRuntimeInstance",
    "dataFilePath": "Administrator/UptimeDowntimeData/sample_csv1.csv",
    "datasetName": "ud_dataset_api1",
    "datasetRepo": "AnalyticsUploadStorage",
    "hasHeader": true,
    "metaFilePath": "Administrator/UptimeDowntimeData/sample_csv1_metadata.json",
    "metaRepo": "AnalyticsUploadStorage"
}

THEN

https://<serverIp>/Thingworx/Things/AnalyticsServer_Thing_DataThing/Services/GetJobInfo?appKey=<appKey>

Request Body:

{"jobId": "<jobId>"} return above error.

 

I've also attached the sample csv file.

Here is metadata JSON:

[
  {
    "fieldName": "no_of_short_stops",
    "dataType": "INTEGER",
    "opType": "CONTINUOUS"
  },
  {
    "fieldName": "no_of_long_stops",
    "dataType": "INTEGER",
    "opType": "CONTINUOUS"
  },
  {
    "fieldName": "no_of_uptime",
    "dataType": "INTEGER",
    "opType": "CONTINUOUS"
  },
  {
    "fieldName": "total_uptime",
    "dataType": "INTEGER",
    "opType": "CONTINUOUS"
  },
  {
    "fieldName": "total_downtime",
    "dataType": "INTEGER",
    "opType": "CONTINUOUS"
  },
  {
    "fieldName": "no_of_cycles",
    "dataType": "INTEGER",
    "opType": "CONTINUOUS"
  },
  {
    "fieldName": "no_of_end_cycles",
    "dataType": "INTEGER",
    "opType": "CONTINUOUS"
  },
  {
    "fieldName": "no_of_parts_changed",
    "dataType": "INTEGER",
    "opType": "CONTINUOUS"
  },
  {
    "fieldName": "current_part",
    "dataType": "STRING",
    "opType": "INFORMATIONAL"
  },
  {
    "fieldName": "current_state",
    "dataType": "STRING",
    "opType": "INFORMATIONAL"
  },
  {
    "fieldName": "pre_failure",
    "dataType": "BOOLEAN",
    "opType": "BOOLEAN"
  }
]

Since it's a hosted server, I'm still looking for the logs

Re: Create Dataset via REST API fails

Hi @cmorfin,

Now I'm getting this error in Analytics Builder also.

TW_create_dataset_fails.png

Plz help...My application has stopped working now...

Re: Create Dataset via REST API fails

Hi

 

I have contacted the devzone team as I think something got weary on your instance.

 

As a side note, I was able to upload the data successfully using 

https://<serverIp>/Thingworx/Things/AnalyticsServer_Thing_DataThing/Services/CreateDataset?appKey=<appKey>

Request Body:

{
    "csvURI": "thingworx://AnalyticsUploadStorage/UptimeDowntimeData/sample_csv1.csv",
    "csvHasHeaders": true,
    "metadataFileURI": "thingworx://AnalyticsUploadStorage/UptimeDowntimeData/sample_csv1_metadata.json"
}

 

by the way you should not use https://<serverIP>/Thingworx/Things/TW_ML_Helper/Services/CreateDatasetAMS , this is intended to be used by ThingWorx Analytics Builder.

 

Kind regards

Christophe

 

Re: Create Dataset via REST API fails

Hi @cmorfin,

Can they tell me what's wrong with this instance then cuz my application has stopped working ryt now...

Re: Create Dataset via REST API fails

Hi

 

I was talking to the DevZone team but it appears that the hosted instances are not meant to be used with Analytics as there are some known issues.

Instead all the Analytics Quickstart Guides point to use the Analytics Trial Edition (ATE) that is downloadable from  https://developer.thingworx.com/resources/downloads .

 

I understand that it used to work but unfortunately there is no support from the DevZone team for the analytics component on the hosted instances.

So the best way forward for you is to download and install the ATE.

 

Hope this helps

Kind rgeards

Christophe

 

View solution in original post

Re: Create Dataset via REST API fails

Hi @cmorfin,

I wasn't using the ATE bcuz of the ThingPredictor issue.

Now that it's resolved, I'm trying again. Will update my posts accordingly.

Re: Create Dataset via REST API fails

Hi

 

The ATE version has been updated, so if you download it again today the version will include the configuration for ThingPredictor.

 

Regards

Christophe