Google Drive Table
    • Dark
      Light

    Google Drive Table

    • Dark
      Light

    Article Summary

    This article is specific to the following platforms - BigQuery.

    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 <your-account@your-project.iam.gserviceaccount.com> --scopes
    https://www.googleapis.com/auth/cloud-platform
    https://www.googleapis.com/auth/drive
    

    Please Note

    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.

    Properties

    PropertySettingDescription
    NameTextA human-readable name for the component.
    This is automatically determined from the table name when the Table Name property is first set.
    ProjectTextEnter the name of the Google Cloud Platform Project that the table belongs to.
    DatasetTextEnter the name of the Google Cloud Platform Dataset that the table belongs to.
    New Table NameTextSelect an existing table to load data into.
    Table MetadataColumn NameThe name of the new column
    Data TypeFor 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 MetadataWhen the Define Nested Metadata checkbox is ticked inside the 'Table Metadata' property, a tree-structure can be defined for metadata.
    ModeThe field mode. Default is 'NULLABLE'.
    NULLABLE: Field allows null values
    REQUIRED: Field does not accept null values
    REPEATED: Field can accept multiple values
    Create/ReplaceSelectCreate: 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 ... cascade
    is used which may actually remove many other database objects.
    Google Drive URL LocationTextThe URL of the Google Drive file. This follows the format https://drive.google.com/open?id=(fileid).
    CompressionSelectWhether the input file is compressed in gzip format or not compressed at all.
    File FormatSelectGoogle Sheets
    CSV
    JSON (New line delimited): this requires an additional "JSON Format".
    Number of Errors AllowedTextThe 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 ValuesSelectYes: 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.
    DelimiterSelectThe delimiter that separates columns. The default is a Comma. A [TAB] character can be specified as "\ ".
    CSV QuoterTextSpecifies the character to be used as the quote character when using the CSV option.
    EncodingSelectThe encoding the data is in. This defaults to UTF-8.
    Header Rows To SkipTextThe number of rows at the top of the file to ignore - defaults to 0.
    Allow quoted newlinesSelectYes: 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 RowsSelectYes: 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.