Ready to get started?

Learn more about the or download a free trial:

Download Now

Analyze Sage US Data in R

Use standard R functions and the development environment of your choice to analyze Sage US data with the CData JDBC Driver for Sage US.

Access Sage US data with pure R script and standard SQL on any machine where R and Java can be installed. You can use the CData JDBC Driver for Sage US and the RJDBC package to work with remote Sage US data in R. By using the CData Driver, you are leveraging a driver written for industry-proven standards to access your data in the popular, open-source R language. This article shows how to use the driver to execute SQL queries to Sage US and visualize Sage US data by calling standard R functions.

Install R

You can match the driver's performance gains from multi-threading and managed code by running the multithreaded Microsoft R Open or by running open R linked with the BLAS/LAPACK libraries. This article uses Microsoft R Open 3.2.3, which is preconfigured to install packages from the Jan. 1, 2016 snapshot of the CRAN repository. This snapshot ensures reproducibility.

Load the RJDBC Package

To use the driver, download the RJDBC package. After installing the RJDBC package, the following line loads the package:

library(RJDBC)

Connect to Sage US as a JDBC Data Source

You will need the following information to connect to Sage US as a JDBC data source:

  • Driver Class: Set this to cdata.jdbc.sage50us.Sage50USDriver
  • Classpath: Set this to the location of the driver JAR. By default this is the lib subfolder of the installation folder.

The DBI functions, such as dbConnect and dbSendQuery, provide a unified interface for writing data access code in R. Use the following line to initialize a DBI driver that can make JDBC requests to the CData JDBC Driver for Sage US:

driver <- JDBC(driverClass = "cdata.jdbc.sage50us.Sage50USDriver", classPath = "MyInstallationDir\lib\cdata.jdbc.sage50us.jar", identifier.quote = "'")

You can now use DBI functions to connect to Sage US and execute SQL queries. Initialize the JDBC connection with the dbConnect function.

The Application Id and Company Name connection string options are required to connect to Sage as a data source. You can obtain an Application Id by contacting Sage directly to request access to the Sage 50 SDK.

Sage must be installed on the machine. The Sage.Peachtree.API.dll and Sage.Peachtree.API.Resolver.dll assemblies are required. These assemblies are installed with Sage in C:\Program Files\Sage\Peachtree\API\. Additionally, the Sage SDK requires .NET Framework 4.0 and is only compatible with 32-bit applications. To use the Sage SDK in Visual Studio, set the Platform Target property to "x86" in Project -> Properties -> Build.

You must authorize the application to access company data: To authorize your application to access Sage, restart the Sage application, open the company you want to access, and connect with your application. You will then be prompted to set access permissions for the application in the resulting dialog.

While the compiled executable will require authorization only once, during development you may need to follow this process to reauthorize a new build. To avoid restarting the Sage application when developing with Visual Studio, click Build -> Configuration Manager and uncheck "Build" for your project.

Built-in Connection String Designer

For assistance in constructing the JDBC URL, use the connection string designer built into the Sage US JDBC Driver. Either double-click the JAR file or execute the jar file from the command-line.

java -jar cdata.jdbc.sage50us.jar

Fill in the connection properties and copy the connection string to the clipboard.

Below is a sample dbConnect call, including a typical JDBC connection string:

conn <- dbConnect(driver,"jdbc:sage50us:ApplicationId=8dfafu4V4ODmh1fM0xx;CompanyName=Bellwether Garden Supply - Premium;")

Schema Discovery

The driver models Sage US APIs as relational tables, views, and stored procedures. Use the following line to retrieve the list of tables:

dbListTables(conn)

Execute SQL Queries

You can use the dbGetQuery function to execute any SQL query supported by the Sage US API:

customer <- dbGetQuery(conn,"SELECT Name, LastInvoiceAmount FROM Customer")

You can view the results in a data viewer window with the following command:

View(customer)

Plot Sage US Data

You can now analyze Sage US data with any of the data visualization packages available in the CRAN repository. You can create simple bar plots with the built-in bar plot function:

par(las=2,ps=10,mar=c(5,15,4,2)) barplot(customer$LastInvoiceAmount, main="Sage US Customer", names.arg = customer$Name, horiz=TRUE)