Using R to work with data feeds

R is an open-source language for statistical analysis and data visualizations. Installing third party packages to your R environment provides functionality for connecting to data feeds.

For more information about R, see R: The R Project for Statistical Computing.

Sections in this article: 

Considerations

  • Igloo Authentication: When connecting to your digital workplace's data feeds, you must authenticate using your Igloo Authentication credentials. If you do not know what your Igloo Authentication password is, see Resetting a forgotten Igloo password
  • R Libraries: The instructions in this article use:
    • httr package: Library for GET requests to data feeds URIs.
    • keyringr (Optional): Library for securely storing authentication credentials.
    • jsonlite: Library for working with JSON data.

Who can do this?

Connect to your data feeds

  1. (Optional) Securely store authentication credentials with keyringr. Follow the keyringr instructions for your operating system.
  2. Within the R environment, load the needed packages. 

    install.packages("httr")
    install.packages("keyringr")#if using keyringr
    install.packages("jsonlite")
    
    library(httr)
    library(keyringr)#if using keyringr
    library(jsonlite)
  3. Compose the URI of the GET request for the desired table.

    url <- "https://{your community domain}/odata/dUser"

    If using a filter, or URI that contains spaces, the character code of "%20" must be used in place of a space.

    url <- "https://{your community domain}/odata/dUser?$filter=user_key%20eq%2020322315"
  4. Get the data feeds.

    response <- GET(url, authenticate('{username}','{pass}'))
    df1 <- jsonlite::fromJSON(rawToChar((response$content))) 

    If using a secure method of password storage, substitute its function for '{pass}'.

Example: Importing two data feeds and merging them

  1. Install and load the libraries.

    install.packages("httr")
    install.packages("keyringr")#if using keyringr
    install.packages("jsonlite") 
    
    library(httr)
    library(keyringr)
    library(jsonlite)
  2. Compose the URIs for the desired data feeds.

    url1 <- "https://{your community domain}/odata/dContainerSpace" #odata url for space dimension table
    url2 <- "https://{your community domain}/odata/fContainerSpace" #odata url for space fact table
  3. Get the data feeds.

    response1 <- GET(url1, authenticate('user', 'pass')) #load data for dimension table
    df1 <- jsonlite::fromJSON(rawToChar((response1$content))) #parse dimension data to dataframe
    response2 <- GET(url2, authenticate('user', 'pass')) #load data for fact table
    df2 <- jsonlite::fromJSON(rawToChar((response2$content))) #parse fact data to dataframe
  4. Merge the data feeds on their key.

    merge(x=df1,y=df2,by.x=df1$space_key,by.y=df2$space_key) #join fact and dimension tables to get details for space level activity