Menggunakan deteksi otomatis skema

Deteksi otomatis skema

Deteksi otomatis skema memungkinkan BigQuery menyimpulkan skema untuk data CSV, JSON, atau Google Spreadsheet. Deteksi otomatis skema tersedia saat Anda memuat data ke BigQuery dan saat Anda membuat kueri sumber data eksternal.

Jika deteksi otomatis diaktifkan, BigQuery akan menyimpulkan jenis data untuk setiap kolom. BigQuery memilih file acak di sumber data dan memindai hingga 500 baris data pertama untuk digunakan sebagai sampel perwakilan. Selanjutnya, BigQuery memeriksa setiap kolom dan mencoba menetapkan jenis data ke kolom tersebut berdasarkan nilai dalam sampel. Jika semua baris dalam kolom kosong, deteksi otomatis akan ditetapkan secara default ke jenis data STRING untuk kolom tersebut.

Jika tidak mengaktifkan deteksi otomatis skema untuk data CSV, JSON, atau Google Spreadsheet, Anda harus memberikan skema secara manual saat membuat tabel.

Anda tidak perlu mengaktifkan deteksi otomatis skema untuk file ekspor Avro, Parquet, ORC, Firestore, atau Datastore. Format file ini menentukan deskripsi secara mandiri, sehingga BigQuery otomatis menyimpulkan skema tabel dari data sumber. Untuk file Parquet, Avro, dan Orc, Anda dapat secara opsional menyediakan skema eksplisit untuk mengganti skema yang diinferensi.

Anda dapat melihat skema yang terdeteksi untuk tabel dengan cara berikut:

  • Menggunakan Konsol Google Cloud.
  • Gunakan perintah bq show alat command line bq.

Saat mendeteksi skema, BigQuery terkadang mungkin mengubah nama kolom agar kompatibel dengan sintaksis GoogleSQL.

Untuk informasi tentang konversi jenis data, lihat yang berikut ini:

Memuat data menggunakan deteksi otomatis skema

Untuk mengaktifkan deteksi otomatis skema saat memuat data, gunakan salah satu pendekatan berikut:

  • Di Konsol Google Cloud, di bagian Schema, untuk Auto detect, centang opsi Schema and input parameter.
  • Di alat command line bq, gunakan perintah bq load dengan parameter --autodetect.

Ketika deteksi otomatis skema diaktifkan, BigQuery akan melakukan upaya terbaik untuk otomatis menyimpulkan skema untuk file CSV dan JSON. Logika deteksi otomatis menyimpulkan jenis kolom skema dengan membaca hingga 500 baris data pertama. Baris utama dilewati jika tanda --skip_leading_rows ada. Jenis kolom didasarkan pada baris yang memiliki kolom paling banyak. Oleh karena itu, deteksi otomatis akan berfungsi seperti yang diharapkan selama setidaknya ada satu baris data yang memiliki nilai di setiap kolom.

Deteksi otomatis skema tidak digunakan pada file Avro, file Parquet, file ORC, file ekspor Firestore, atau file ekspor Datastore. Saat Anda memuat file ini ke BigQuery, skema tabel akan otomatis diambil dari data sumber yang mendeskripsikan sendiri.

Untuk menggunakan deteksi otomatis skema saat Anda memuat data JSON atau CSV:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Explorer, luaskan project Anda dan pilih set data.

  3. Luaskan opsi Actions dan klik Open.

  4. Di panel detail, klik Create table .

  5. Di halaman Create table, di bagian Source:

    • Untuk Create table from, pilih jenis sumber yang Anda inginkan.
    • Di kolom sumber, cari bucket File/Cloud Storage, atau masukkan Cloud Storage URI. Perhatikan bahwa Anda tidak dapat menyertakan beberapa URI di Konsol Google Cloud, tetapi karakter pengganti didukung. Bucket Cloud Storage harus berada di lokasi yang sama dengan set data yang berisi tabel yang Anda buat.

      Pilih file.

    • Untuk File format, pilih CSV atau JSON.

  6. Di halaman Create table, di bagian Destination:

    • Untuk Dataset name, pilih set data yang sesuai.

      Pilih set data.

    • Di kolom Table name, masukkan nama tabel yang Anda buat.

    • Pastikan Table type disetel ke Native table.

  7. Klik Create table.

bq

Berikan perintah bq load dengan parameter --autodetect.

(Opsional) Berikan flag --location dan tetapkan nilainya ke lokasi Anda.

Perintah berikut memuat file menggunakan deteksi otomatis skema:

bq --location=LOCATION load \
--autodetect \
--source_format=FORMAT \
DATASET.TABLE \
PATH_TO_SOURCE

Ganti kode berikut:

  • LOCATION: nama lokasi Anda. Flag --location bersifat opsional. Misalnya, jika Anda menggunakan BigQuery di region Tokyo, tetapkan nilai flag ke asia-northeast1. Anda dapat menetapkan nilai default untuk lokasi menggunakan file .bigqueryrc.
  • FORMAT: NEWLINE_DELIMITED_JSON atau CSV.
  • DATASET: set data yang berisi tabel tempat Anda memuat data.
  • TABLE: nama tabel tempat Anda memuat data.
  • PATH_TO_SOURCE: adalah lokasi file CSV atau JSON.

Contoh:

Masukkan perintah berikut untuk memuat myfile.csv dari mesin lokal Anda ke tabel bernama mytable yang disimpan dalam set data bernama mydataset.

bq load --autodetect --source_format=CSV mydataset.mytable ./myfile.csv

Masukkan perintah berikut untuk memuat myfile.json dari mesin lokal Anda ke tabel bernama mytable yang disimpan dalam set data bernama mydataset.

bq load --autodetect --source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable ./myfile.json

API

  1. Buat tugas load yang mengarah ke data sumber. Untuk informasi tentang cara membuat tugas, lihat Menjalankan tugas BigQuery secara terprogram. Tentukan lokasi Anda di properti location di bagian jobReference.

  2. Tentukan format data dengan menetapkan properti sourceFormat. Untuk menggunakan deteksi otomatis skema, nilai ini harus ditetapkan ke NEWLINE_DELIMITED_JSON atau CSV.

  3. Gunakan properti autodetect untuk menyetel deteksi otomatis skema ke true.

Go

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

import (
	"context"
	"fmt"

	"cloud.google.com/go/bigquery"
)

// importJSONAutodetectSchema demonstrates loading data from newline-delimited JSON data in Cloud Storage
// and using schema autodetection to identify the available columns.
func importJSONAutodetectSchema(projectID, datasetID, tableID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// tableID := "mytable"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	gcsRef := bigquery.NewGCSReference("gs://cloud-samples-data/bigquery/us-states/us-states.json")
	gcsRef.SourceFormat = bigquery.JSON
	gcsRef.AutoDetect = true
	loader := client.Dataset(datasetID).Table(tableID).LoaderFrom(gcsRef)
	loader.WriteDisposition = bigquery.WriteEmpty

	job, err := loader.Run(ctx)
	if err != nil {
		return err
	}
	status, err := job.Wait(ctx)
	if err != nil {
		return err
	}

	if status.Err() != nil {
		return fmt.Errorf("job completed with error: %v", status.Err())
	}
	return nil
}

Java

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.FormatOptions;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.JobInfo;
import com.google.cloud.bigquery.LoadJobConfiguration;
import com.google.cloud.bigquery.TableId;

// Sample to load JSON data with autodetect schema from Cloud Storage into a new BigQuery table
public class LoadJsonFromGCSAutodetect {

  public static void runLoadJsonFromGCSAutodetect() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String tableName = "MY_TABLE_NAME";
    String sourceUri = "gs://cloud-samples-data/bigquery/us-states/us-states.json";
    loadJsonFromGCSAutodetect(datasetName, tableName, sourceUri);
  }

  public static void loadJsonFromGCSAutodetect(
      String datasetName, String tableName, String sourceUri) {
    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(datasetName, tableName);
      LoadJobConfiguration loadConfig =
          LoadJobConfiguration.newBuilder(tableId, sourceUri)
              .setFormatOptions(FormatOptions.json())
              .setAutodetect(true)
              .build();

      // Load data from a GCS JSON file into the table
      Job job = bigquery.create(JobInfo.of(loadConfig));
      // Blocks until this load table job completes its execution, either failing or succeeding.
      job = job.waitFor();
      if (job.isDone()) {
        System.out.println("Json Autodetect from GCS successfully loaded in a table");
      } else {
        System.out.println(
            "BigQuery was unable to load into the table due to an error:"
                + job.getStatus().getError());
      }
    } catch (BigQueryException | InterruptedException e) {
      System.out.println("Column not added during load append \n" + e.toString());
    }
  }
}
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.Job;
import com.google.cloud.bigquery.JobInfo;
import com.google.cloud.bigquery.LoadJobConfiguration;
import com.google.cloud.bigquery.TableId;

// Sample to load CSV data with autodetect schema from Cloud Storage into a new BigQuery table
public class LoadCsvFromGcsAutodetect {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String tableName = "MY_TABLE_NAME";
    String sourceUri = "gs://cloud-samples-data/bigquery/us-states/us-states.csv";
    loadCsvFromGcsAutodetect(datasetName, tableName, sourceUri);
  }

  public static void loadCsvFromGcsAutodetect(
      String datasetName, String tableName, String sourceUri) {
    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(datasetName, tableName);

      // Skip header row in the file.
      CsvOptions csvOptions = CsvOptions.newBuilder().setSkipLeadingRows(1).build();

      LoadJobConfiguration loadConfig =
          LoadJobConfiguration.newBuilder(tableId, sourceUri)
              .setFormatOptions(csvOptions)
              .setAutodetect(true)
              .build();

      // Load data from a GCS CSV file into the table
      Job job = bigquery.create(JobInfo.of(loadConfig));
      // Blocks until this load table job completes its execution, either failing or succeeding.
      job = job.waitFor();
      if (job.isDone() && job.getStatus().getError() == null) {
        System.out.println("CSV Autodetect from GCS successfully loaded in a table");
      } else {
        System.out.println(
            "BigQuery was unable to load into the table due to an error:"
                + job.getStatus().getError());
      }
    } catch (BigQueryException | InterruptedException e) {
      System.out.println("Column not added during load append \n" + e.toString());
    }
  }
}

Node.js

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Node.js API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

// Import the Google Cloud client libraries
const {BigQuery} = require('@google-cloud/bigquery');
const {Storage} = require('@google-cloud/storage');

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const datasetId = "my_dataset";
// const tableId = "my_table";

/**
 * This sample loads the JSON file at
 * https://storage.googleapis.com/cloud-samples-data/bigquery/us-states/us-states.json
 *
 * TODO(developer): Replace the following lines with the path to your file.
 */
const bucketName = 'cloud-samples-data';
const filename = 'bigquery/us-states/us-states.json';

async function loadJSONFromGCSAutodetect() {
  // Imports a GCS file into a table with autodetected schema.

  // Instantiate clients
  const bigquery = new BigQuery();
  const storage = new Storage();

  // Configure the load job. For full list of options, see:
  // https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#JobConfigurationLoad
  const metadata = {
    sourceFormat: 'NEWLINE_DELIMITED_JSON',
    autodetect: true,
    location: 'US',
  };

  // Load data from a Google Cloud Storage file into the table
  const [job] = await bigquery
    .dataset(datasetId)
    .table(tableId)
    .load(storage.bucket(bucketName).file(filename), metadata);
  // load() waits for the job to finish
  console.log(`Job ${job.id} completed.`);

  // Check the job's status for errors
  const errors = job.status.errors;
  if (errors && errors.length > 0) {
    throw errors;
  }
}
loadJSONFromGCSAutodetect();

PHP

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery PHP API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

use Google\Cloud\BigQuery\BigQueryClient;

/**
 * Imports data to the given table from json file present in GCS by auto
 * detecting options and schema.
 *
 * @param string $projectId The project Id of your Google Cloud Project.
 * @param string $datasetId The BigQuery dataset ID.
 * @param string $tableId The BigQuery table ID.
 */
function import_from_storage_json_autodetect(
    string $projectId,
    string $datasetId,
    string $tableId = 'us_states'
): void {
    // instantiate the bigquery table service
    $bigQuery = new BigQueryClient([
      'projectId' => $projectId,
    ]);
    $dataset = $bigQuery->dataset($datasetId);
    $table = $dataset->table($tableId);

    // create the import job
    $gcsUri = 'gs://cloud-samples-data/bigquery/us-states/us-states.json';
    $loadConfig = $table->loadFromStorage($gcsUri)->autodetect(true)->sourceFormat('NEWLINE_DELIMITED_JSON');
    $job = $table->runJob($loadConfig);

    // check if the job is complete
    $job->reload();
    if (!$job->isComplete()) {
        throw new \Exception('Job has not yet completed', 500);
    }
    // check if the job has errors
    if (isset($job->info()['status']['errorResult'])) {
        $error = $job->info()['status']['errorResult']['message'];
        printf('Error running job: %s' . PHP_EOL, $error);
    } else {
        print('Data imported successfully' . PHP_EOL);
    }
}

Python

Untuk mengaktifkan deteksi otomatis skema, tetapkan properti LoadJobConfig.autodetect ke True.

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

# TODO(developer): Set table_id to the ID of the table to create.
# table_id = "your-project.your_dataset.your_table_name

# Set the encryption key to use for the destination.
# TODO: Replace this key with a key you have created in KMS.
# kms_key_name = "projects/{}/locations/{}/keyRings/{}/cryptoKeys/{}".format(
#     "cloud-samples-tests", "us", "test", "test"
# )
job_config = bigquery.LoadJobConfig(
    autodetect=True, source_format=bigquery.SourceFormat.NEWLINE_DELIMITED_JSON
)
uri = "gs://cloud-samples-data/bigquery/us-states/us-states.json"
load_job = client.load_table_from_uri(
    uri, table_id, job_config=job_config
)  # Make an API request.
load_job.result()  # Waits for the job to complete.
destination_table = client.get_table(table_id)
print("Loaded {} rows.".format(destination_table.num_rows))

Ruby

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Ruby API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

require "google/cloud/bigquery"

def load_table_gcs_json_autodetect dataset_id = "your_dataset_id"
  bigquery = Google::Cloud::Bigquery.new
  dataset  = bigquery.dataset dataset_id
  gcs_uri  = "gs://cloud-samples-data/bigquery/us-states/us-states.json"
  table_id = "us_states"

  load_job = dataset.load_job table_id,
                              gcs_uri,
                              format:     "json",
                              autodetect: true
  puts "Starting job #{load_job.job_id}"

  load_job.wait_until_done! # Waits for table load to complete.
  puts "Job finished."

  table = dataset.table table_id
  puts "Loaded #{table.rows_count} rows to table #{table.id}"
end

Deteksi otomatis skema untuk sumber data eksternal

Deteksi otomatis skema dapat digunakan dengan sumber data eksternal CSV, JSON, dan Google Spreadsheet. Ketika deteksi otomatis skema diaktifkan, BigQuery akan melakukan upaya terbaik untuk secara otomatis menyimpulkan skema dari data sumber. Jika tidak mengaktifkan deteksi otomatis skema untuk sumber ini, Anda harus memberikan skema eksplisit.

Anda tidak perlu mengaktifkan deteksi otomatis skema saat membuat kueri file ekspor eksternal Avro, Parquet, ORC, Firestore, atau Datastore. Format file ini menentukan deskripsi secara mandiri, sehingga BigQuery otomatis menyimpulkan skema tabel dari data sumber. Untuk file Parquet, Avro, dan Orc, Anda dapat secara opsional menyediakan skema eksplisit untuk mengganti skema yang diinferensi.

Dengan menggunakan Konsol Google Cloud, Anda dapat mengaktifkan deteksi otomatis skema dengan mencentang opsi Schema and input parameters untuk Auto detect.

Dengan menggunakan alat command line bq, Anda dapat mengaktifkan deteksi otomatis skema saat membuat file definisi tabel untuk data CSV, JSON, atau Google Spreadsheet. Saat menggunakan alat bq untuk membuat file definisi tabel, teruskan --autodetect kemkdef untuk mengaktifkan deteksi otomatis skema, atau teruskan --noautodetect untuk menonaktifkan deteksi otomatis.

Saat Anda menggunakan flag --autodetect, setelan autodetect akan ditetapkan ke true dalam file definisi tabel. Saat Anda menggunakan flag --noautodetect, setelan autodetect ditetapkan ke false. Jika Anda tidak memberikan definisi skema untuk sumber data eksternal saat membuat definisi tabel, dan Anda tidak menggunakan flag --noautodetect atau --autodetect, autodetect disetel secara default ke true.

Saat Anda membuat file definisi tabel menggunakan API, tetapkan nilai properti autodetect ke true atau false. Menyetel autodetect ke true akan mengaktifkan deteksi otomatis. Menyetel autodetect ke false akan menonaktifkan deteksi otomatis.

Detail deteksi otomatis

Selain mendeteksi detail skema, deteksi otomatis juga akan mengenali hal-hal berikut:

Kompresi

BigQuery mengenali kompresi file yang kompatibel dengan gzip saat membuka file.

Nilai tanggal dan waktu

BigQuery mendeteksi nilai tanggal dan waktu berdasarkan format data sumber.

Nilai di kolom DATE harus dalam format berikut: YYYY-MM-DD.

Nilai dalam kolom TIME harus dalam format berikut: HH:MM:SS[.SSSSSS] (komponen pecahan detik bersifat opsional).

Untuk kolom TIMESTAMP, BigQuery mendeteksi beragam format stempel waktu, termasuk, tetapi tidak terbatas pada:

  • YYYY-MM-DD HH:MM
  • YYYY-MM-DD HH:MM:SS
  • YYYY-MM-DD HH:MM:SS.SSSSSS
  • YYYY/MM/DD HH:MM

Stempel waktu juga dapat berisi offset UTC atau penentu zona UTC ('Z').

Berikut adalah beberapa contoh nilai yang akan dideteksi secara otomatis oleh BigQuery sebagai nilai stempel waktu:

  • 2018-08-19 12:11
  • 2018-08-19 12:11:35.22
  • 2018/08/19 12:11
  • 2018-08-19 07:11:35.220 -05:00

Jika BigQuery tidak mengenali formatnya, BigQuery akan memuat kolom sebagai jenis data string. Dalam hal ini, Anda mungkin perlu melakukan pra-pemrosesan data sumber sebelum memuatnya. Misalnya, jika Anda mengekspor data CSV dari spreadsheet, setel format tanggal agar sesuai dengan salah satu contoh yang ditampilkan di sini. Atau, Anda dapat mengubah data setelah memuatnya ke BigQuery.

Deteksi otomatis skema untuk data CSV

Pembatas CSV

BigQuery mendeteksi pembatas berikut:

  • koma ( , )
  • garis vertikal ( | )
  • tab ( \t )

Header CSV

BigQuery menyimpulkan header dengan membandingkan baris pertama file dengan baris lain dalam file. Jika baris pertama hanya berisi string, dan baris lainnya berisi jenis data lain, BigQuery mengasumsikan bahwa baris pertama adalah baris header. BigQuery menetapkan nama kolom berdasarkan nama kolom di baris header. Nama mungkin diubah agar memenuhi aturan penamaan untuk kolom di BigQuery. Misalnya, spasi akan diganti dengan garis bawah.

Jika tidak, BigQuery akan menganggap baris pertama sebagai baris data, dan menetapkan nama kolom generik seperti string_field_1. Perhatikan bahwa setelah tabel dibuat, nama kolom tidak dapat diperbarui dalam skema, meskipun Anda dapat mengubah nama secara manual setelah tabel dibuat. Pilihan lainnya adalah menyediakan skema eksplisit daripada menggunakan deteksi otomatis.

Anda mungkin memiliki file CSV dengan baris header, dengan semua kolom datanya berupa string. Dalam hal ini, BigQuery tidak akan secara otomatis mendeteksi bahwa baris pertama adalah sebuah header. Gunakan opsi --skip_leading_rows untuk melewati baris header. Jika tidak, header akan diimpor sebagai data. Dalam kasus ini, pertimbangkan juga untuk memberikan skema eksplisit sehingga Anda dapat menetapkan nama kolom.

Baris baru yang dikutip CSV

BigQuery mendeteksi karakter baris baru yang dikutip dalam kolom CSV dan tidak menafsirkan karakter baris baru yang dikutip sebagai batas baris.

Deteksi otomatis skema untuk data JSON

Kolom bertingkat dan berulang JSON

BigQuery menyimpulkan kolom bertingkat dan berulang dalam file JSON. Jika nilai kolom adalah objek JSON, BigQuery akan memuat kolom sebagai jenis RECORD. Jika nilai kolom adalah array, BigQuery akan memuat kolom tersebut sebagai kolom berulang. Untuk contoh data JSON dengan data bertingkat dan berulang, lihat Memuat data JSON bertingkat dan berulang.

Konversi string

Jika Anda mengaktifkan deteksi otomatis skema, BigQuery akan mengonversi string menjadi jenis Boolean, numerik, atau tanggal/waktu jika memungkinkan. Misalnya, dengan menggunakan data JSON berikut, deteksi otomatis skema akan mengonversi kolom id menjadi kolom INTEGER:

{ "name":"Alice","id":"12"}
{ "name":"Bob","id":"34"}
{ "name":"Charles","id":"45"}

Untuk informasi selengkapnya, baca bagian Memuat data JSON dari Cloud Storage.

Deteksi otomatis skema untuk Google Spreadsheet

Untuk Spreadsheet, BigQuery akan otomatis mendeteksi apakah baris pertama merupakan baris header, mirip dengan deteksi otomatis untuk file CSV. Jika baris pertama diidentifikasi sebagai header, BigQuery akan menetapkan nama kolom berdasarkan nama kolom dalam baris header dan melewati baris tersebut. Nama mungkin diubah agar memenuhi aturan penamaan untuk kolom di BigQuery. Misalnya, spasi akan diganti dengan garis bawah.

Keamanan tabel

Untuk mengontrol akses ke tabel di BigQuery, lihat Pengantar kontrol akses tabel.