Reference documentation and code samples for the google-cloud-bigquery class Google::Cloud::Bigquery::External::SheetsSource.
SheetsSource
SheetsSource is a subclass of DataSource and represents a Google Sheets external data source that can be queried from directly, even though the data is not stored in BigQuery. Instead of loading or streaming the data, this object references the external data source.
Example
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new sheets_url = "https://docs.google.com/spreadsheets/d/1234567980" sheets_table = bigquery.external sheets_url do |sheets| sheets.skip_leading_rows = 1 end data = bigquery.query "SELECT * FROM my_ext_table", external: { my_ext_table: sheets_table } # Iterate over the first page of results data.each do |row| puts row[:name] end # Retrieve the next page of results data = data.next if data.next?
Methods
#range
def range() -> String
Range of a sheet to query from. Only used when non-empty. Typical
format: {sheet_name}!{top_left_cell_id}:{bottom_right_cell_id}
.
- (String) — Range of a sheet to query from.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new sheets_url = "https://docs.google.com/spreadsheets/d/1234567980" sheets_table = bigquery.external sheets_url do |sheets| sheets.range = "sheet1!A1:B20" end sheets_table.range #=> "sheet1!A1:B20"
#range=
def range=(new_range)
Set the range of a sheet to query from. Only used when non-empty.
Typical format:
{sheet_name}!{top_left_cell_id}:{bottom_right_cell_id}
.
- new_range (String) — New range of a sheet to query from.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new sheets_url = "https://docs.google.com/spreadsheets/d/1234567980" sheets_table = bigquery.external sheets_url do |sheets| sheets.range = "sheet1!A1:B20" end sheets_table.range #=> "sheet1!A1:B20"
#skip_leading_rows
def skip_leading_rows() -> Integer
The number of rows at the top of a sheet that BigQuery will skip
when reading the data. The default value is 0
.
This property is useful if you have header rows that should be
skipped. When autodetect
is on, behavior is the following:
nil
- Autodetect tries to detect headers in the first row. If they are not detected, the row is read as data. Otherwise data is read starting from the second row.0
- Instructs autodetect that there are no headers and data should be read starting from the first row.N > 0
- Autodetect skipsN-1
rows and tries to detect headers in rowN
. If headers are not detected, rowN
is just skipped. Otherwise rowN
is used to extract column names for the detected schema.
- (Integer)
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new sheets_url = "https://docs.google.com/spreadsheets/d/1234567980" sheets_table = bigquery.external sheets_url do |sheets| sheets.skip_leading_rows = 1 end sheets_table.skip_leading_rows #=> 1
#skip_leading_rows=
def skip_leading_rows=(row_count)
Set the number of rows at the top of a sheet that BigQuery will skip when reading the data.
- row_count (Integer) — New skip_leading_rows value
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new sheets_url = "https://docs.google.com/spreadsheets/d/1234567980" sheets_table = bigquery.external sheets_url do |sheets| sheets.skip_leading_rows = 1 end sheets_table.skip_leading_rows #=> 1