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

Community Tip - Did you get an answer that solved your problem? Please mark it as an Accepted Solution so others with the same problem can find the answer easily. X

Thingworx Analytics 8.1 API Example

jrajesh
10-Marble

Thingworx Analytics 8.1 API Example

Hi,

I am trying to explore the Thingworx Analytics API - 8.1. I was trying to use the GetDatasetSchema service on the localhost-AnalyticsServer_DataThing as a REST API. Although there is API guide at ThingWorx Analytics API , an example will help me.

Any documents giving example usages for the TWX Analytics API 8.1?

Thanks and Regards,

Jyothi

ACCEPTED SOLUTION

Accepted Solutions
cmorfin
19-Tanzanite
(To:jrajesh)

Hi Jyothi

You may want to have a look at this article: https://www.ptc.com/en/support/article?n=CS271485

There are some explanation and most importantly, as far as example as concerned, you have a json collection file (at the very bottom) that you can download and import into, let's say Postman, to check some examples.

Hope this helps.

Kind regards

Christophe

View solution in original post

7 REPLIES 7
cmorfin
19-Tanzanite
(To:jrajesh)

Hi Jyothi

You may want to have a look at this article: https://www.ptc.com/en/support/article?n=CS271485

There are some explanation and most importantly, as far as example as concerned, you have a json collection file (at the very bottom) that you can download and import into, let's say Postman, to check some examples.

Hope this helps.

Kind regards

Christophe

jrajesh
10-Marble
(To:jrajesh)

Hi Christophe,

Thanks you very much for getting back... that really helped!

I am particularly trying to use the API

http://127.0.0.1:8888/ThingWorx/Things/localhost-AnalyticsServer_DataThing/Services/GetDatasetSchema


The documentation at ThingWorx Analytics API mentions the details. I am giving the body as follows, But I am still getting a 404. Any ideas what might be going wrong?

{"dataSource": {

                "dataShape": {

                    "fieldDefinitions": {

                        "datasetUri": {

                            "name": "datasetUri",

                            "description": "Location of the data",

                            "baseType": "STRING",

                            "ordinal": 0,

                            "aspects": {}

                        },

                        "format": {

                            "name": "format",

                            "description": "Structure of the data (CSV,PARQUET,CLQUET)",

                            "baseType": "STRING",

                            "ordinal": 0,

                            "aspects": {}

                        },

                        "filter": {

                            "name": "filter",

                            "description": "SQL WHERE clause to refine the dataset",

                            "baseType": "STRING",

                            "ordinal": 0,

                            "aspects": {}

                        },

                        "exclusions": {

                            "name": "exclusions",

                            "description": "Fields to remove from the dataset",

                            "baseType": "INFOTABLE",

                            "ordinal": 0,

                            "aspects": {

                                "dataShape": "GenericStringList"

                            }

                        },

                        "data": {

                            "name": "data",

                            "description": "An infotable of data (must be flat. for providing data as part of request)",

                            "baseType": "INFOTABLE",

                            "ordinal": 0,

                            "aspects": {}

                        },

                        "metadata": {

                            "name": "metadata",

                            "description": "Metadata of the dataset (for providing data as part of request)",

                            "baseType": "INFOTABLE",

                            "ordinal": 0,

                            "aspects": {

                                "dataShape": "AnalyticsDatasetMetadata"

                            }

                        }

                    }

                },

                "rows": [

                    {

                        "datasetUri": "dataset:/1715c6d4-a513-44fa-be49-68fcd1075642",

                         "format": "parquet"

                    }

                ]

            }

}

Thanks and Regards,

Jyothi

cmorfin
19-Tanzanite
(To:jrajesh)

Hi Jyothi

I have used your code and it works for me.

Since you are gettign a 404 error this woudl indicate that the URI has some error.

Are you sure of the Thing name in the URI ?

Thanks

Christophe

jrajesh
10-Marble
(To:cmorfin)

Hi Christophe,

The Thing name is correct. I could execute the ListCreatedDatasets API with this thing. Is there a way to access the http access logs to understand what is the REST URI that reached the server? I can compare mine with the one executed via Thingworx Test Services. The same service executed via ThingWorx works fine.

Thanks and Regards,

Jyothi

cmorfin
19-Tanzanite
(To:jrajesh)

Hi Jyothi

You can get the access.log (and error.log) with the command: docker cp nginx:/var/log/nginx .

This will copy the /var/log/nginx folder to the local path, change . with the full path to the local directory if you want it somewhere else.

hope this helps.

Kind regards

Christophe

jrajesh
10-Marble
(To:jrajesh)

Hi,

I am now trying to create a Javascript service in my own ThingTemplate which internally calls the GetDataSchema. This is how I am doing it.

var dataSet = Things['localhost-AnalyticsServer_DataThing'].ListCreatedDatasets();

var params = {

infoTableName : "InfoTable",

dataShapeName : "AnalyticsDatasetRef"

};

// CreateInfoTableFromDataShape(infoTableName:STRING("InfoTable"), dataShapeName:STRING):INFOTABLE(AnalyticsDatasetRef)

var infoTable1 = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape(params);

// AnalyticsDatasetRef entry object

var newEntry = new Object();

newEntry.filter = dataSet.filter; // STRING

newEntry.datasetUri = dataSet.datasetUri; // STRING

newEntry.metadata = dataSet.metadata; // INFOTABLE

newEntry.data = dataSet.data; // INFOTABLE

newEntry.format = dataSet.format; // STRING

newEntry.exclusions = dataSet.exclusions; // INFOTABLE

infoTable1.AddRow(newEntry);

logger.debug(infoTable1);

result = Things['localhost-AnalyticsServer_DataThing'].GetDatasetSchema(infoTable1);

But I am getting the error:

Wrapped java.lang.Exception: Invalid parameter type for service : [GetDatasetSchema] on localhost-AnalyticsServer_DataThing Cause: Invalid parameter type for service : [GetDatasetSchema] on localhost-AnalyticsServer_DataThing

Any ideas?

Thanks and Regards,

Jyothi

jrajesh
10-Marble
(To:jrajesh)

Got it!

var params = {

dataSource: infoTable1 /* INFOTABLE */

};

// result: INFOTABLE dataShape: AnalyticsDatasetMetadata

result = Things["localhost-AnalyticsServer_DataThing"].GetDatasetSchema(params);

Announcements


Top Tags