test_that("persistent array_op from uploaded data frame", {
skip_if_no_db()
withr::local_options(stringsAsFactors = FALSE)
conn = get_scidb_connection()
df = data.frame(
f_str = letters[1:5],
f_double = c(3.14, 2.0, NA, 0, -99),
f_bool = c(T,NA,F,NA,F),
f_int64 = 1:5 * 10.0
)
template = conn$array_from_schema(
" <f_str:string COMPRESSION 'zlib', f_int32:int32, f_int64:int64, f_bool: bool, f_double: double, f_datetime: datetime> [da=0:*:0:*]"
)
uploaded = conn$upload_df(df, template, .temp = F)
filtered = uploaded$filter(f_double > 0)
stored1 = filtered$persist(.temp = F, .gc = F)
stored2 = filtered$persist(.temp = T)
filteredDf = dplyr::filter(df, f_double > 0)
expect_equal(stored1$to_df(), filteredDf)
expect_equal(stored2$to_df(), filteredDf)
# Clean up
stored1$remove_array()
gc()
# stored2 should be auto deleted after GC
try(stored2$remove_array(), silent = T)
})
test_that("Store AFL as scidb array and return arrayOp", {
skip_if_no_db()
withr::local_options(stringsAsFactors = FALSE)
conn = get_scidb_connection()
df = data.frame(
f_str = letters[1:5],
f_double = c(3.14, 2.0, NA, 0, -99),
f_bool = c(T,NA,F,NA,F),
f_int64 = 1:5 * 10.0
)
template = conn$array_from_schema(
"<f_str:string COMPRESSION 'zlib', f_int32:int32, f_int64:int64, f_bool: bool, f_double: double, f_datetime: datetime> [da=0:*:0:*]"
)
uploaded = conn$upload_df(df, template, .temp = F)
filtered = uploaded$filter(f_double > 0)
randomName = dbutils$random_array_name()
stored = uploaded$filter(f_double > 0)$persist(randomName, .temp = T, .gc = F)
# Cannot 'overwrite' an existing array
expect_error(
uploaded$filter(f_double < 0)$persist(randomName),
"already exists"
)
# Cleanup
stored$remove_array()
uploaded$remove_array()
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.