-
Notifications
You must be signed in to change notification settings - Fork 0
/
r_example.R
110 lines (100 loc) · 2.72 KB
/
r_example.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#Import libraries
library(jsonlite) # For JSON manipulation
library(ghql) # For working with GraphQL queries
# Function to execute GraphQL query and parse result
execute_query <- function(endpoint, authheader, query) {
# Create instance of GraphQL client and set connection settings
con <- GraphqlClient$new(
url = endpoint,
headers = list("Ocp-Apim-Subscription-Key" = authheader)
)
# Execute the query
result <- con$exec(query)
# Parse the result from JSON to a list
results <- fromJSON(result, flatten = TRUE)
# Return the 'data' part of the results
return(results[["data"]])
}
# Define GraphQL queries
# Query for retrieving data from the 'Infobase' table - this table is public
query_infobase <- Query$new()
query_infobase$query('Infobase', '{
Infobase {
Date
Location
region
measureid
fractionid
viral_load
seven_day_rolling_avg
pruid
}
}')
# Query for filtering records from the 'measures' table where 'siteID' is "TAB"
query_measures_site <- Query$new()
query_measures_site$query('measures_site', '{
measures(filter: { siteID: { is: "TAB" } }) {
measureRepID
protocolID
sampleID
purposeID
polygonID
siteID
datasetID
measureSetRepID
compartment
specimenID
fraction
group
class
measure
value
unit
aggregation
nomenclature
index
measureLic
reportable
organizationID
contactID
refLink
}
}')
# Query for multi-filtering records from the 'measures' table
query_measures_multi_filter <- Query$new()
query_measures_multi_filter$query('measures_multi_filter', '{
measures(filter: { siteID: { is: "TAB" }, measure: { contains: "flu" } }) {
measureRepID
protocolID
sampleID
purposeID
polygonID
siteID
datasetID
measureSetRepID
compartment
specimenID
fraction
group
class
measure
value
unit
aggregation
nomenclature
index
measureLic
reportable
organizationID
contactID
refLink
}
}')
# Get API key from .Renviron file
# authheader <- Sys.getenv("WWAPIKey")
authheader <- "replace_me"
endpoint <- "replace_me"
# Call execute_query function to execute GraphQL queries and parse JSON results into data frames
Infobase_df <- execute_query(endpoint, authheader, query_infobase$queries$Infobase)
measures_site_df <- execute_query(endpoint, authheader, query_measures_site$queries$measures_site)
measures_multi_filter_df <- execute_query(endpoint, authheader, query_measures_multi_filter$queries$measures_multi_filter)