猿问

如何将架构与有效负载相关联?

对于上下文: 我正在为除雪机设置PubSub发射器。(对于其他读者,PubSub是Google Cloud Platforms上的一个简单队列,它接收作为数组输入的消息)。


['data' => 'Name', 'attributes' => 'key pair values of whatever data you are sending']

上面的内容无关紧要,只是我必须创建一个自定义的Emitter类才能实现此目标,因为Google Cloud PubSub的连接器与Snowplow提供的陈旧的http请求/套接字/其他连接器不同。


实际问题:


我想为我发送的每个事件设置一个特定的架构。您如何将架构与每个有效负载相关联?


PHP Tracker SyncEmitter(提供的最标准的除雪机Emitter)不允许对该模式进行任何自定义设置(如下所示)


private function getPostRequest($buffer) {

    $data = array("schema" => self::POST_REQ_SCEHMA, "data" => $buffer);

    return $data;

}

它被硬编码到每个跟踪的事件中。


因此,我进行了调查。并在扫雪机追踪器上阅读更多内容。我仍然感到困惑,我知道我可以扩展Payload类并强制将自己的模式作为变量,但是为什么还不这样呢?我之所以问是因为我假设开源程序员做对了,而我却没有正确地理解它。


凤凰求蛊
浏览 126回答 1
1回答

ABOUTYOU

我想到了。Tracker类包含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的默认功能,并提供以上内容作为我的问题的解决方案。但是它仍然有一个环绕数据的模式(包含输入模式)。
随时随地看视频慕课网APP
我要回答