juanparati / laravel-bq
为 Laravel 提供的现代 BigQuery 连接管理器
11.0
2024-04-05 08:25 UTC
Requires
- php: ^8.0
- google/cloud-bigquery: ^1.30
- illuminate/support: ^9.20|^10.0|^11.0
- symfony/cache: ^6.4
Requires (Dev)
- orchestra/testbench: >=7.0
- phpunit/phpunit: >=9.5
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"
提供凭证有两种方式
- 定义服务账户配置文件为路径。例如
'projects' => [
'default' => [
'project_id' => env('BIGQUERY_DEFAULT_PROJECT_ID'),
'location' => env('BIGQUERY_DEFAULT_LOCATION', ''),
'credentials' => '../../bigquery_service.json' // Path to service account configuration
]
],
- 提供内联凭证。例如
'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