Positionsparameter und bereitgestellte Typen

Abfrage mit Positionsparametern und bereitgestellten Parametertypen ausführen

Codebeispiel

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.QueryJobConfiguration;
import com.google.cloud.bigquery.QueryParameterValue;
import com.google.cloud.bigquery.StandardSQLTypeName;
import com.google.cloud.bigquery.TableResult;

// Sample to run query with positional types parameters.
public class QueryWithPositionalTypesParameters {

  public static void main(String[] args) {
    String[] words = {"and", "is", "the", "moon"};
    String corpus = "romeoandjuliet";
    Integer wordsCount = 250;
    String query =
        "SELECT word, word_count"
            + " FROM `bigquery-public-data.samples.shakespeare`"
            + " WHERE word IN UNNEST(?)"
            + " AND corpus = ?"
            + " AND word_count >= ?"
            + " ORDER BY word_count DESC";
    queryWithPositionalTypesParameters(query, words, corpus, wordsCount);
  }

  public static void queryWithPositionalTypesParameters(
      String query, String[] words, String corpus, Integer wordsCount) {
    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();

      QueryParameterValue wordList = QueryParameterValue.array(words, StandardSQLTypeName.STRING);
      QueryParameterValue corpusParam = QueryParameterValue.of(corpus, StandardSQLTypeName.STRING);
      QueryParameterValue minWordCount =
          QueryParameterValue.of(wordsCount, StandardSQLTypeName.INT64);

      // Note: Standard SQL is required to use query parameters.
      QueryJobConfiguration queryConfig =
          QueryJobConfiguration.newBuilder(query)
              .addPositionalParameter(wordList)
              .addPositionalParameter(corpusParam)
              .addPositionalParameter(minWordCount)
              .build();

      TableResult results = bigquery.query(queryConfig);

      results
          .iterateAll()
          .forEach(row -> row.forEach(val -> System.out.printf("%s,", val.toString())));

      System.out.println("Query with positional types parameters performed successfully.");
    } catch (BigQueryException | InterruptedException e) {
      System.out.println("Query not performed \n" + e.toString());
    }
  }
}

Rust

use google_cloud_bigquery::client::BigQuery;
use google_cloud_bigquery::model::{QueryParameter, QueryParameterType, QueryParameterValue};

pub async fn sample(project_id: &str) -> anyhow::Result<()> {
    let client = BigQuery::builder().build().await?;

    let mut rows = client
        .query("SELECT ? AS str_col, ? AS int_col, ? AS float_col;")
        .with_project_id(project_id)
        .set_parameter_mode("POSITIONAL")
        .set_query_parameters([
            QueryParameter::new()
                .set_parameter_type(QueryParameterType::new().set_type("STRING"))
                .set_parameter_value(QueryParameterValue::new().set_value("example string")),
            QueryParameter::new()
                .set_parameter_type(QueryParameterType::new().set_type("INT64"))
                .set_parameter_value(QueryParameterValue::new().set_value("42")),
            QueryParameter::new()
                .set_parameter_type(QueryParameterType::new().set_type("FLOAT64"))
                .set_parameter_value(QueryParameterValue::new().set_value("3.14159")),
        ])
        .set_location("US")
        .run()
        .await?
        .until_done()
        .await?
        .read();

    while let Some(row) = rows.next().await.transpose()? {
        let str_col: String = row.get("str_col");
        let int_col: i64 = row.get("int_col");
        let float_col: f64 = row.get("float_col");
        println!("String: {str_col}, Int: {int_col}, Float: {float_col}");
    }
    Ok(())
}

Weitere Informationen

Wenn Sie nach Codebeispielen für andere Produkte von Google Cloud suchen und filtern möchten, können Sie den Beispielbrowser fürGoogle Cloud verwenden.