使用 BigQuery PHP 客户端库查询公共数据集

使用 BigQuery PHP 客户端库查询公共数据集

了解如何:

  1. 在 Google Cloud 项目中激活 Cloud Shell。
  2. 打开 Cloud Shell 编辑器。
  3. 准备执行查询操作所需的文件。
  4. 在 BigQuery 中查询公共数据集。
  5. 清理。

预计完成时间:

点击开始即可开始。

在 Google Cloud 项目中激活 Cloud Shell

  1. 如果您没有为项目启用结算功能,系统将自动使用 BigQuery 沙盒。借助 BigQuery 沙盒,您可以免费使用限定的 BigQuery 功能,以此了解 BigQuery。如果您不打算在本文档之外使用您的项目,建议您使用 BigQuery 沙盒。

  2. 点击激活 Cloud Shell点击查看

如需了解如何打开 Cloud Shell 编辑器,请点击下一步

打开 Cloud Shell Editor

  1. 在 Cloud Shell 中,创建新的 PHP 项目和文件:

    mkdir bigquery-php-quickstart \
        && touch \
        bigquery-php-quickstart/app.php
    

    此命令会创建一个名为 bigquery-php-quickstart 的 PHP 项目和一个名为 app.php 的文件。

  2. 打开 Cloud Shell 编辑器:

    cloudshell workspace bigquery-php-quickstart
    

如需了解如何准备执行查询操作所需的文件,请点击下一步

准备执行查询操作所需的文件

  1. 如需在 Cloud Shell 编辑器中打开终端,请点击打开终端

  2. 打开项目目录:

    cd bigquery-php-quickstart
    
  3. 安装 PHP 版 BigQuery 客户端库:

    composer require google/cloud-bigquery
    

    输出类似于以下内容:为了简化输出,此处省略了数行代码。

    Running composer update google/cloud-bigquery
    Loading composer repositories with package information
    Updating dependencies
    ...
    No security vulnerability advisories found
    Using version ^1.24 for google/cloud-bigquery
    

如需了解如何在 BigQuery 中查询公共数据集,请点击下一步

在 BigQuery 中查询公共数据集

  1. 点击打开编辑器

  2. 探索器窗格中,找到您的 BIGQUERY-PHP-QUICKSTART 项目。

  3. 点击 app.php 文件以将其打开。

  4. 如需针对 bigquery-public-data.stackoverflow 数据集创建查询以返回前 10 个最常查看的 Stack Overflow 页面及其查看次数,请将以下代码复制到 app.php 文件中:

    <?php
    # ...
    
    require __DIR__ . '/vendor/autoload.php';
    
    use Google\Cloud\BigQuery\BigQueryClient;
    
    
    $bigQuery = new BigQueryClient();
    $query = <<<ENDSQL
    SELECT
      CONCAT(
        'https://stackoverflow.com/questions/',
        CAST(id as STRING)) as url,
      view_count
    FROM `bigquery-public-data.stackoverflow.posts_questions`
    WHERE tags like '%google-bigquery%'
    ORDER BY view_count DESC
    LIMIT 10;
    ENDSQL;
    $queryJobConfig = $bigQuery->query($query);
    $queryResults = $bigQuery->runQuery($queryJobConfig);
    
    if ($queryResults->isComplete()) {
        $i = 0;
        $rows = $queryResults->rows();
        foreach ($rows as $row) {
            printf('--- Row %s ---' . PHP_EOL, ++$i);
            printf('url: %s, %s views' . PHP_EOL, $row['url'], $row['view_count']);
        }
        printf('Found %s row(s)' . PHP_EOL, $i);
    } else {
        throw new Exception('The query failed to complete');
    }

  5. 点击打开终端

  6. 在终端运行 app.php 脚本。如果系统提示您授权 Cloud Shell 并同意相应条款,请点击授权

    php app.php
    

    结果类似于以下内容:

    --- Row 1 ---
    url: https://stackoverflow.com/questions/35159967, 170023 views
    --- Row 2 ---
    url: https://stackoverflow.com/questions/22879669, 142581 views
    --- Row 3 ---
    url: https://stackoverflow.com/questions/10604135, 132406 views
    --- Row 4 ---
    url: https://stackoverflow.com/questions/44564887, 128781 views
    --- Row 5 ---
    url: https://stackoverflow.com/questions/27060396, 127008 views
    --- Row 6 ---
    url: https://stackoverflow.com/questions/12482637, 120766 views
    --- Row 7 ---
    url: https://stackoverflow.com/questions/20673986, 115720 views
    --- Row 8 ---
    url: https://stackoverflow.com/questions/39109817, 108368 views
    --- Row 9 ---
    url: https://stackoverflow.com/questions/11057219, 105175 views
    --- Row 10 ---
    url: https://stackoverflow.com/questions/43195143, 101878 views
    Found 10 row(s)
    

您已成功通过 BigQuery PHP 客户端库查询了公共数据集。

为避免系统向您的账号收取费用以及了解后续步骤,请点击下一步

后续步骤

您可以保留您创建的资源并利用 BigQuery 执行更多操作,也可以清理这些资源以避免产生结算费用。

利用 BigQuery 执行更多操作

清理

为避免系统向您的 Google Cloud 账号收取费用,请删除您的 Google Cloud 项目,或删除您在本演示中创建的资源。

删除项目

如果您为了解 BigQuery 创建了一个新项目,但现在不再需要该项目,请删除项目。请注意,删除项目会同时删除项目中的所有内容,并且自定义项目 ID 也会丢失。

删除资源

如果您使用的是现有项目,请删除您创建的 bigquery-php-quickstart 文件夹:

  1. 在 Cloud Shell 中,转到上一级目录:

    cd ..
    
  2. 删除您创建的资源:

    rm -R bigquery-php-quickstart
    

    -R 标志表示删除文件夹中的所有资产。