juanparati/laravel-bq

为 Laravel 提供的现代 BigQuery 连接管理器

11.0 2024-04-05 08:25 UTC

This package is auto-updated.

Last update: 2024-09-05 09:19:21 UTC


README

这是什么?

这是一个 Laravel 库,允许以简单的方式管理 BigQuery 连接并执行查询。

此库是原始 Google BigQuery 库 的包装器。

功能

  • 多项目和多重认证。
  • Laravel 缓存适配器。
  • 抽象方法。
  • 安全内联认证。

安装

composer require juanparati/laravel-bq

外观注册(可选)

'aliases' => [
    ...
    'BQ' => \Juanparati\LaravelBQ\Facades\BigQueryManagerFacade::class,
    ...
]

配置

生成配置文件

artisan vendor:publish --provider="Juanparati\LaravelBQ\Providers\BigQueryManagerProvider"

提供凭证有两种方式

  1. 定义服务账户配置文件为路径。例如
    'projects' => [
        'default' => [
            'project_id'  => env('BIGQUERY_DEFAULT_PROJECT_ID'),
            'location'    => env('BIGQUERY_DEFAULT_LOCATION', ''),
            'credentials' => '../../bigquery_service.json'  // Path to service account configuration
        ]
    ],
  1. 提供内联凭证。例如
    'projects' => [
        'default' => [
            'project_id'  => env('BIGQUERY_DEFAULT_PROJECT_ID'),
            'location'    => env('BIGQUERY_DEFAULT_LOCATION', ''),
            'credentials' => [           
                  'type': 'service_account',
                  'project_id': 'foobar',
                  'private_key_id': '123456',
                  'private_key': "-----BEGIN PRIVATE KEY-----\nFOOBAR\nFOOBAR=\n-----END PRIVATE KEY-----\n",
                  'client_email': 'bigquery@test.iam.gserviceaccount.com',
                  'client_id': '1234567890',
                  'auth_uri': 'https://#/o/oauth2/auth',
                  'token_uri': 'https://oauth2.googleapis.com/token',
                  'auth_provider_x509_cert_url': 'https://www.googleapis.com/oauth2/v1/certs',
                  'client_x509_cert_url': 'https://www.googleapis.com/robot/v1/metadata/x509/bigquery%40test.iam.gserviceaccount.com'
            ]
        ]
    ],

为了生成安全内联凭证,使用 artisan 命令 bigquery:credentials

示例

artisan bigquery:credentials ../bigquery_service.json --projectId=foo --location=EU

上述命令将生成使用您的项目加密密钥加密的私钥的内联凭证。

使用方法

获取默认项目的 BigQuery 客户端

BQ::getClient();

获取另一个项目的 BigQuery 客户端

BQ::project('second_project')->getClient();

运行查询并返回结果

$results = BQ::query('SELECT TRUE as result');

或者对于另一个项目

$results = BQ::project('second_project')->query('SELECT TRUE as result');  // Query another project