Google Drive Table
Google Drive Table
Create a table that references data stored in Google Drive. New to Google Drive? Read Introduction to Google Drive API.
Your Matillion ETL instance must have access to this Google Drive data. That is to say that the GCP credentials used in Matillion ETL must be from an account that has the right to at least view the data. Publicly viewable Google sheets can be accessed and used by Matillion ETL, regardless of credentials.
Should a sheet be specified that Matillion ETL does not have proper access to, this component may still successfully run, as it is merely referencing the data in a table. However, when the table itself is used (e.g. sampled), an error may then occur when the referenced data cannot be accessed.
It is essential that your GCP credentials have the Google Drive API enabled. Read Google Query Authentication Guide for details. Due to limitations of how Google BigQuery communicates with Google Drive, it may be necessary to grant additional API scope - even beyond Allow full access to all Cloud APIs. To do this, use the following command (completed with your own information in the <brackets>) in the Google BigQuery console:
gcloud beta compute instances set-scopes <your instance> --service-account <email@example.com> --scopes https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/drive
Shared links using the type=anyone or type=domain options (created in 2017 or earlier) may no longer function. These links can be amended by creating a new shared link in Google Drive. To learn more, read Access link-shared files using resource keys.
|Name||Text||A human-readable name for the component.
This is automatically determined from the table name when the Table Name property is first set.
|Project||Text||Enter the name of the Google Cloud Platform Project that the table belongs to.|
|Dataset||Text||Enter the name of the Google Cloud Platform Dataset that the table belongs to.|
|New Table Name||Text||Select an existing table to load data into.|
|Table Metadata||Column Name||The name of the new column|
|Data Type||For more information on available BigQuery data types please refer to the GCP documentation.
String: this type can hold any kind of data, subject to a maximum size.
Integer: this type is suitable for whole-number types (no decimals).
Float: this type is suitable for numeric types, with or without decimals.
Numeric: this data type is suitable for data of an exact numeric value, allowing 38 digits of precision and 9 decimal digits of scale.
Boolean: this type is suitable for data that is either 'true' or 'false'.
Date: a formatted date object without time. See the GCP documentation.
Time: a formatted time object without date. See the GCP documentation.
DateTime: a formatted timestamp containing both date and time that is easily readable by the user. See the GCP documentation.
Timestamp: this type is a timestamp left unformatted (exists as Unix/Epoch Time).
|Define Nested Metadata||When the Define Nested Metadata checkbox is ticked inside the 'Table Metadata' property, a tree-structure can be defined for metadata.|
|Mode||The field mode. Default is 'NULLABLE'.
NULLABLE: Field allows null values
REQUIRED: Field does not accept null values
REPEATED: Field can accept multiple values
|Create/Replace||Select||Create: The default option, creates a new table. This will generate an error if a table with the same name already
exists, but will never destroy existing data.
Create if not exists: This will only create a new table if a table of the same name does not already exist. It will not destroy existing data. If the schema of the existing table does not match the schema defined in this component, no attempt is made to fix or correct it, which could lead to errors later in the job if you did not expect an existing table to exist, or to have a different schema to the one defined in this component.
Replace This drops any existing table of the same name, and then creates a new table. This guarantees that after the component succeeds the table matches the schema defined in this component, however any existing data in an existing table will be lost.
Note: Since other database objects may depend upon this table,
drop ... cascadeis used which may actually remove many other database objects.
|Google Drive URL Location||Text||The URL of the Google Drive file. This follows the format https://drive.google.com/open?id=(fileid).|
|Compression||Select||Whether the input file is compressed in gzip format or not compressed at all.|
|File Format||Select||Google Sheets
JSON (New line delimited): this requires an additional "JSON Format".
|Number of Errors Allowed||Text||The maximum number of individual parsing errors that cause the whole load to fail. Values up to this will be substituted as null values. This value defaults to 0.|
|Ignore Unknown Values||Select||Yes: Accept rows that contain values that do not match the schema. Unknown values are ignored. Will ignore extra
values at the end of a line for CSV files.
No: Omit any rows with invalid values.
|Delimiter||Select||The delimiter that separates columns. The default is a Comma. A [TAB] character can be specified as "\ ".|
|CSV Quoter||Text||Specifies the character to be used as the quote character when using the CSV option.|
|Encoding||Select||The encoding the data is in. This defaults to UTF-8.|
|Header Rows To Skip||Text||The number of rows at the top of the file to ignore - defaults to 0.|
|Allow quoted newlines||Select||Yes: Allow a CSV value to contain a newline character when the value is encased in quotation marks.
No: A new line character, regardless of quotations, is always considered a new row.
|Allow Jagged Rows||Select||Yes: Missing values are treated as 'null' but accepted.
No: Rows with missing data are treated as bad records. Note: A bad record will count toward the 'Maximum Errors' count.
Sharing with Service Accounts in Google Drive
If you wish to share your Google Sheets objects or other Google Drive objects with Matillion ETL without making the Sheets or other Drive objects publicly available, you can specify the service account that Matillion ETL runs under when sharing.
To do this, follow these steps:
1. Log in to the Google Cloud Console.
2. Once you have logged in, click the navigation menu button, and then scroll down to and click Compute Engine.
3. Within the Compute Engine menu, click VM instances, which is located under the heading VIRTUAL MACHINES.
4. Click on the name of an existing VM instance.
5. Within the VM instance details dialog, click EDIT.
6. Scroll down to Service account and select the service account to share the Google Sheet or other Google Drive object with. Copy this account address.
7. Navigate to Google Sheets/Google Drive, then click into a Sheet or other object, and click the Share button. Paste the service account into the text box in the Share with people and groups dialog, and then click Done.