您如何将架构与有效负载相关联?
How do you associate a schema with a payload?
上下文:
我正在为扫雪机设置 PubSub 发射器。 (对于其他读者,PubSub 是 Google 云平台上的一个简单队列,它接收作为输入的数组的消息)。
['data' => 'Name', 'attributes' => 'key pair values of whatever data you are sending']
除了我必须创建一个自定义发射器 class 以实现此目标之外,以上内容无关紧要,因为 Google Cloud PubSub 与典型的 http request/sockets/others 有一些不同的连接器扫雪机提供。
实际问题:
我想为我发送的每个事件设置一个特定的架构。您如何将模式与每个有效负载相关联?
PHPTracker SyncEmitter(最标准的扫雪机提供的发射器)不允许对模式进行任何自定义设置(如下所示)
private function getPostRequest($buffer) {
$data = array("schema" => self::POST_REQ_SCEHMA, "data" => $buffer);
return $data;
}
它被硬编码到每个跟踪的事件中。
所以我调查了一下。并进一步阅读扫雪机追踪器。我仍然感到困惑,我知道我可以扩展 Payload class 并强制将我自己的模式作为变量,但为什么不是这样呢?我问是因为我假设开源程序员做对了,但我没有正确理解它。
我想通了。
追踪器 class 包含 trackUnstructuredEvent
:
/**
* Tracks an unstructured event with the aforementioned metrics
*
* @param array $event_json - The properties of the event. Has two fields:
* - A "data" field containing the event properties and
* - A "schema" field identifying the schema against which the data is validated
* @param array|null $context - Event Context
* @param int|null $tstamp - Event Timestamp
*/
public function trackUnstructEvent($event_json, $context = NULL, $tstamp = NULL) {
$envelope = array("schema" => self::UNSTRUCT_EVENT_SCHEMA, "data" => $event_json);
$ep = new Payload($tstamp);
$ep->add("e", "ue");
$ep->addJson($envelope, $this->encode_base64, "ue_px", "ue_pr");
$this->track($ep, $context);
}
它接受架构作为输入。 Snowplow 希望您使用 Tracker 的默认功能并提供以上内容作为我的问题的解决方案。
但它仍然有一个围绕数据的模式(包含输入模式)....我自己回答的更多问题...
上下文: 我正在为扫雪机设置 PubSub 发射器。 (对于其他读者,PubSub 是 Google 云平台上的一个简单队列,它接收作为输入的数组的消息)。
['data' => 'Name', 'attributes' => 'key pair values of whatever data you are sending']
除了我必须创建一个自定义发射器 class 以实现此目标之外,以上内容无关紧要,因为 Google Cloud PubSub 与典型的 http request/sockets/others 有一些不同的连接器扫雪机提供。
实际问题:
我想为我发送的每个事件设置一个特定的架构。您如何将模式与每个有效负载相关联?
PHPTracker SyncEmitter(最标准的扫雪机提供的发射器)不允许对模式进行任何自定义设置(如下所示)
private function getPostRequest($buffer) {
$data = array("schema" => self::POST_REQ_SCEHMA, "data" => $buffer);
return $data;
}
它被硬编码到每个跟踪的事件中。
所以我调查了一下。并进一步阅读扫雪机追踪器。我仍然感到困惑,我知道我可以扩展 Payload class 并强制将我自己的模式作为变量,但为什么不是这样呢?我问是因为我假设开源程序员做对了,但我没有正确理解它。
我想通了。
追踪器 class 包含 trackUnstructuredEvent
:
/**
* Tracks an unstructured event with the aforementioned metrics
*
* @param array $event_json - The properties of the event. Has two fields:
* - A "data" field containing the event properties and
* - A "schema" field identifying the schema against which the data is validated
* @param array|null $context - Event Context
* @param int|null $tstamp - Event Timestamp
*/
public function trackUnstructEvent($event_json, $context = NULL, $tstamp = NULL) {
$envelope = array("schema" => self::UNSTRUCT_EVENT_SCHEMA, "data" => $event_json);
$ep = new Payload($tstamp);
$ep->add("e", "ue");
$ep->addJson($envelope, $this->encode_base64, "ue_px", "ue_pr");
$this->track($ep, $context);
}
它接受架构作为输入。 Snowplow 希望您使用 Tracker 的默认功能并提供以上内容作为我的问题的解决方案。
但它仍然有一个围绕数据的模式(包含输入模式)....我自己回答的更多问题...