sminnee / stitchdata-php
StitchData.com 导入API的PHP SDK
0.2.1
2021-02-12 02:24 UTC
Requires
- php: >=5.6
- honzabrecka/transit-php: ^0.8.3
README
StitchData.com 导入API的 导入API 的PHP SDK。
安装
这是一个 Composer 库,可以使用 composer require
安装。当前版本为 ^0.1
composer require sminnee/stitchdata-php:^0.1
用法
new StitchApi(string $clientId, string $accessToken)
Sminnee\StitchData\StitchApi
类提供了对API的访问。其构造函数接受两个参数,这些参数在 导入API文档 中有描述。
use Sminnee\StitchData\StitchApi; $api = new StitchApi(getenv('STITCHDATA_CLIENT_ID'), getenv('STITCHDATA_ACCESS_TOKEN'));
StitchApi::validate(array $data = null, $includeClientId = true)
验证连接是否正常以及您的凭证是否正确。
- 验证请求的内容(
$data
)。它必须是一个包含映射的数组。 - 如果省略了
$data
,将提供模拟请求,包括客户端ID。 - 如果
$includeClientId
为true,则将在数据中的每条记录中添加一个client_id
属性,除非它已经指定。
// Throws an exception if there's an issue with our connection $api->validate();
StitchApi::pushRecords(string $tableName, array $keyNames, iterable $records, int $batchSize = 100, ?callable $onBatchSent = null)
将多条记录以1或多个批次的形式推送到API。
$tableName
是您数据仓库中的表名,您希望StitchData创建和/或写入该表。它将在对API的请求中填充table_name
。$keyNames
是您想共同使用的记录键数组,用作主键。它将在对API的请求中填充key_names
。$records
是记录的数组或迭代器,其中每个记录都是一个映射。这是要更新的数据。$batchSize
,默认为100,是单个API请求中可包含的最大记录数。$onBatchSent
,一个回调,将在每次成功的API调用时传递所有已发送的记录的数组。当传递生成器数据时,这特别有用,因为您可以在不单独迭代它的情况下对数据进行后续使用。
您可以使用的数据类型由 Transit库的默认类型映射 决定。值得注意的是,您应该使用Datetime
对象来表示日期/时间。
// Push 2 records to the StitchData, upserting in your data warehouse, and creating the test_peopel table if needed $api->pushRecords( 'test_people', [' id' ], [ [ "id" => 1, "first_name" => "Sam", "last_name" => "Minnee", "num_visits" => 3, "date_last_visit" => new Datetime("2018-06-26"), ], [ "id" => 2, "first_name" => "Ingo", "last_name" => "Schommer", "num_visits" => 6, "date_last_visit" => new Datetime("2018-06-27"), ] ] );
StitchApi::apiCall($subUrl, $data, $includeClientId = true)
对StitchData REST API的原始调用。尽可能使用上述方法,但这允许访问SDK尚未支持的新的API行为。
序列生成
序列ID是与API交互的重要部分。pushRecords()
会自动通过以下机制生成序列ID。
- 第一次请求将使用序列ID为
time() * 1000
。 - 后续请求将使用序列ID + 1 或
time() * 1000
中的较大值。
如果您希望手动生成自己的序列ID,则必须使用apiCall方法,但请提出一个github问题,描述您的用例!