goose goose - 1 year ago 91
R Question

Unable to use bigrquery with standard sql

I'm working in an R ipython notebook (relative R newbie) and trying to extract data from Google Big Query using 'bigrquery'. I'm told this should be simple, but extracting using standard sql isn't working.

Here's my code:

require("bigrquery")

# Use your project ID here
project <- "project-id" # put your project ID here

standard_sql <- "SELECT year, month, day, weight_pounds FROM `publicdata.samples.natality` LIMIT 5"

legacy_sql <- "SELECT year, month, day, weight_pounds FROM [publicdata:samples.natality] LIMIT 5"

# doesn't work
standard_data <- query_exec(standard_sql, project = project, useLegacySql = FALSE)

# works
legacy_data <- query_exec(legacy_sql, project = project, useLegacySql = TRUE)


For the standard sql above it returns the following error:

Error: Invalid table name: `publicdata:samples.natality`
Traceback:

1. query_exec(standard_sql, project = project, useLegacySql = FALSE)
2. run_query_job(query = query, project = project, destination_table = destination_table,
. default_dataset = default_dataset, create_disposition = create_disposition,
. write_disposition = write_disposition, use_legacy_sql = use_legacy_sql,
. quiet = quiet, ...)
3. wait_for(job, quiet = quiet)
4. stop(err$message, call. = FALSE)


It's suggesting that I've not entered the table name correctly for standard SQL, but I seemingly have and the query runs fine from the GBQ console.

What's going wrong?

Answer Source

You sent the wrong variable to the function.

It should be use_legacy_sql = FALSE instead of useLegacySql. They changed the variable name right after committing the new code.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download