Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Version History

« Previous Version 4 Next »

Introduction

PhixFlow allows you to integrate with various APIs to import data. To achieve this you will require three elements.

  1. HTTP Datasourceprovide the information needed to connect to an external source of data via HTTP. 
  2. HTTP Collector: Consumes the data from the HTTP Datasource.
  3. Table: Stores the data from the HTTP Collector.


Example

We will connect to the UK Government bank holiday API and return the bank holiday dates for each country. See Bank Holidays for more detail on the API.

Solution

HTTP Datasource

  1. Drag a HTTP Datasource from the toolbar and drop it on the analysis canvas.
  2. In the properties window set the following:
    1. Name, Set a name indicative of the API.
    2. Enabled, Tick this option. 
    3. Connection Type, Set this to that of the API, in our example we will use HTTPS.
    4. HTTP Datasource Instances, Set the instance connection details. Add a new HTTP Datasource Instance and complete the details as follows:
      1. Name, Indicative of the use of the instance.
      2. Enabled, Tick to use the instance.
      3. Login details can be set if required. see HTTP Datasource for more information.
      4. URL, The URL where the API can be found. For the Gov Bank Holiday API we set this to: www.gov.uk/bank-holidays.json
      5. Click  Apply and Close.
    5. Click  Apply and Close.

HTTP Collector

  1. Hover your mouse over the HTTP Datasource created in the stage above.
  2. From the popup menu select  HTTP Collector. This adds a new HTTP Collector and sets it up to use our HTTP Datasource.
    1. You can drag a new HTTP Collector from the toolbar, but you will need to connect it to the HTTP Datasource.
  3. In the properties window that opens on the right set the following:
    1. Name, Set a name indicative of the data being collected. 
    2. Enabled, Tick this to use the collector.
    3. HTTP Request Method, This defaults to GET or POST. For our example that is correct. However see HTTP Collector for more information, if your API requires something different.
    4. Response → Return Type, In the response section set Return Type to JSON. Other types of data can be returned.
    5. ResponsePath, specifies the data in the JSON you with to return. Most APIs will specify the structure of the data returned, the path is used to filter what is returned. The response utilises xPath Syntax
      1. In our example we only want the bank holidays for each country so we set the value to: $..events
      2. This gives us all countries as we have specified ..
      3. If we want just England and Wales we would specify: $.england-and-wales.events

Table

  1. Hover your mouse over the HTTP Collector created in the stage above.
  2. From the popup menu select  Create New Table 
    1. You can drag a new Table from the toolbar, but you will need to connect it to the HTTP collector.
  3. In the properties window that opens on the right set the following:
    1. Name, Set a name indicative of the data being collected. 
    2. Attributes, Add the attributes you require from your collected data:
      1. Name to Country. Expression to in.^.^.division 
      2. Name to Title. Expression to in.title
      3. Name to Date. Expression to toDate(in.date, "yyyy-MM-dd")
    3. You can navigate up the JSON nodes using the hat symbol ^. This is seen in the Country attribute above: in.^.^.division
    4. You can navigate use ..  as a wild card to include all nodes at that level. This is seen in the Response Path of the HTTP Collector to include all countries: $..events

Trouble Shooting

If you return 0 records

  1. Open the System Console
  2. In the Completed Tasks, click on the table that ran
  3. In the Messages section,  double-click the line with the message "Response from URL:..."
  4. In the window that opens, click the Message Details tab
  5. The raw data is displayed that is returned from the API.
    1. Ensure your Response Path is set correctly to traverse to the required data.

Secured Example

coming soon.

  • No labels