Till recently I have been using a .sql script in conjunction with a hive_conn to retrieve data from hive:
prediction_query <- read_lines(paste0(getwd(), '/sql_queries/test_prediction_data_query.sql')) %>%
glue_collapse(sep = "\n") %>%
glue_sql(.con = hive_conn)
my_df <- DBI::dbGetQuery(hive_conn, prediction_query)
test_prediction_data_query.sql:
with ...
select
i.s as s,
i.install_dt as install_dt,
i.platform as platform,
i.usa as usa,
i.publisher_name as publisher_name,
coalesce(sn.sessions_day_from, 0) as {rlang::parse_exprs(glue('sessions_day_{day_from}'))},
coalesce(sn.sum_session_time_day_from, 0) as {rlang::parse_exprs(glue('sum_session_time_day_{day_from}'))},
coalesce(u.utility_day_from, 0) as {rlang::parse_exprs(glue('utility_day_{day_from}'))},
round(coalesce(u.recent_utility_sum / u.utility_day_from, 0), 2) as recent_utility_ratio,
coalesce(spn.revenue_day_from, 0) as {rlang::parse_exprs(glue('revenue_day_{day_from}'))}
from installs_base i
left join sessions_day_from sn on sn.s = i.s
left join utility_day_from u on u.s = i.s
left join revenue_day_from spn on spn.s = i.s
I have been using this script for a few months with no issues, it worked.
Yesterday I made some changes in trying to install some other packages. The only significant change I can recall was updating packages with updates available using devtools.
This morning when I tried to run the script I get:
prediction_query <- read_lines(paste0(getwd(), '/sql_queries/test_prediction_data_query.sql')) %>%
+ glue_collapse(sep = "\n") %>%
+ glue_sql(.con = hive_conn)
Error in res[is_char] : object of type 'symbol' is not subsettable
In addition: Warning messages:
1: In is.na(res) :
is.na() applied to non-(list or vector) of type 'symbol'
2: In is.na(x) : is.na() applied to non-(list or vector) of type 'symbol'
I did some Google searching but cannot find how to overcome this error message.
Those variables in my select statement do render the expected value in the console:
> rlang::parse_exprs(glue('sessions_day_{day_from}'))
[[1]]
sessions_day_7
> rlang::parse_exprs(glue('sum_session_time_day_{day_from}'))
[[1]]
sum_session_time_day_7
> rlang::parse_exprs(glue('utility_day_{day_from}'))
[[1]]
utility_day_7
> rlang::parse_exprs(glue('revenue_day_{day_from}'))
[[1]]
revenue_day_7
Any ideas on why my sql script stopped working with glue_sql?