Externe Tabelle erstellen

BigQuery Omni verwaltet keine Daten, die in Amazon S3 gespeichert sind. Definieren Sie eine externe Tabelle, um auf S3-Daten zuzugreifen.

So erstellen Sie eine externe Tabelle:

Console

  1. Öffnen Sie in der Cloud Console die Seite „BigQuery“.

    Zur Seite „BigQuery“

  2. Maximieren Sie im Navigationsbereich im Abschnitt Ressourcen Ihr Projekt und wählen Sie ein Dataset aus.

  3. Klicken Sie im Detailfeld auf Tabelle erstellen.

    Grafik: Tabelle erstellen

  4. Gehen Sie auf der Seite Tabelle erstellen im Abschnitt Quelle so vor:

    • Wählen Sie unter Tabelle erstellen aus die Option Amazon S3 aus.
    • Geben Sie unter S3-Pfad auswählen einen URI ein, der auf die S3-Daten im Format s3://BUCKET_NAME/PATH verweist. Ersetzen Sie BUCKET_NAME durch den Namen des S3-Buckets. Die Region des Buckets sollte mit der Region des Datasets übereinstimmen. Ersetzen Sie PATH durch den Pfad, in den Sie die exportierte Datei schreiben möchten. Dieser kann den Platzhalter * enthalten.
    • Wählen Sie für Dateiformat das Datenformat in S3 aus. Unterstützte Formate sind AVRO, PARQUET, ORC, CSV, NEWLINE_DELIMITED_JSON und Google Sheets.
  5. Gehen Sie auf der Seite Tabelle erstellen im Abschnitt Ziel so vor:

    • Wählen Sie für Dataset-Name das entsprechende Dataset aus.

      Dataset auswählen

    • Geben Sie im Feld Tabellenname den Namen der Tabelle ein, die Sie in BigQuery erstellen.

    • Prüfen Sie, ob Tabellentyp auf Externe Tabelle festgelegt ist.

    • Wählen Sie unter Verbindungs-ID im Drop-down die entsprechende Verbindungs-ID aus.

  6. Klicken Sie auf Tabelle erstellen.

bq

bq mk \
--external_table_definition=DATA_FORMAT=
S3_URI@AWS_LOCATION.CONNECTION_NAME \
DATASET_NAME.TABLE_NAME

Ersetzen Sie Folgendes:

  • DATA_FORMAT: alle unterstützten föderierten BigQuery-Formate, z. B. AVRO oder PARQUET
  • S3_URI: URI, der auf die S3-Daten verweist, z. B. s3://bucket/path
  • AWS_LOCATION: AWS-Standort in Google Cloud, z. B. aws-us-east-1
  • CONNECTION_NAME: Name der von Ihnen erstellten Verbindung
  • DATASET_NAME: Name des von Ihnen erstellten Datasets
  • TABLE_NAME: Name, den Sie dieser Tabelle geben möchten

Java

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.CsvOptions;
import com.google.cloud.bigquery.ExternalTableDefinition;
import com.google.cloud.bigquery.Field;
import com.google.cloud.bigquery.Schema;
import com.google.cloud.bigquery.StandardSQLTypeName;
import com.google.cloud.bigquery.TableId;
import com.google.cloud.bigquery.TableInfo;

// Sample to create an external aws table
public class CreateExternalTableAws {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String datasetName = "MY_DATASET_NAME";
    String tableName = "MY_TABLE_NAME";
    String connectionId = "MY_CONNECTION_ID";
    String sourceUri = "s3://your-bucket-name/";
    CsvOptions options = CsvOptions.newBuilder().setSkipLeadingRows(1).build();
    Schema schema =
        Schema.of(
            Field.of("name", StandardSQLTypeName.STRING),
            Field.of("post_abbr", StandardSQLTypeName.STRING));
    ExternalTableDefinition externalTableDefinition =
        ExternalTableDefinition.newBuilder(sourceUri, options)
            .setConnectionId(connectionId)
            .setSchema(schema)
            .build();
    createExternalTableAws(projectId, datasetName, tableName, externalTableDefinition);
  }

  public static void createExternalTableAws(
      String projectId,
      String datasetName,
      String tableName,
      ExternalTableDefinition externalTableDefinition) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      TableId tableId = TableId.of(projectId, datasetName, tableName);
      TableInfo tableInfo = TableInfo.newBuilder(tableId, externalTableDefinition).build();

      bigquery.create(tableInfo);
      System.out.println("Aws external table created successfully");

      // Clean up
      bigquery.delete(TableId.of(projectId, datasetName, tableName));
    } catch (BigQueryException e) {
      System.out.println("Aws external was not created." + e.toString());
    }
  }
}

Weitere Informationen