Google cloud platform 如何将带有数据流的像素跟踪参数摄取到BigQuery表中?
我是GCP的初学者,正在尝试定制这个 来自GCP教程 目标 除了应用程序引擎和计算引擎之外,所有的东西都应该是一样的。我的例子中不需要它们 我的目标是保存后的像素跟踪参数 my.tracking pixel.com/error?[参数] 在PubSub上使用专用的错误主题导入BigQuery表 现状 日志记录之前的无服务器像素跟踪管道已启动并正在运行。之后,我创建了一个导出接收器,将像素跟踪中的数据发布到错误主题中 然后,我按照教程指南创建了一个数据流实体来订阅我的错误主题,并将该主题中的消息摄取到我的BigQuery表中 我的示例表方案如下所示。它只接受字符串类型的消息Google cloud platform 如何将带有数据流的像素跟踪参数摄取到BigQuery表中?,google-cloud-platform,google-bigquery,google-cloud-dataflow,Google Cloud Platform,Google Bigquery,Google Cloud Dataflow,我是GCP的初学者,正在尝试定制这个 来自GCP教程 目标 除了应用程序引擎和计算引擎之外,所有的东西都应该是一样的。我的例子中不需要它们 我的目标是保存后的像素跟踪参数 my.tracking pixel.com/error?[参数] 在PubSub上使用专用的错误主题导入BigQuery表 现状 日志记录之前的无服务器像素跟踪管道已启动并正在运行。之后,我创建了一个导出接收器,将像素跟踪中的数据发布到错误主题中 然后,我按照教程指南创建了一个数据流实体来订阅我的错误主题,并将该主题中的消息摄
Field name Type Mode
msg STRING NULLABLE
现在,使用JSON格式发布消息非常容易
{
"msg":"hello world"
}
或者通过使用属性字段的谷歌控制台发布消息页面。然后我的表被正确更新
吞食尝试
现在,我想将跟踪中的参数传递给我的表,并将它们接收到我的表中
我尝试了以下语法,但没有成功
使用键值映射
my.tracking-pixel.com/error?msg=hello
使用JSON格式
my.tracking-pixel.com/error?{"msg":"hello"}
调试
在数据流中,我看到在检查
输入和输出集合:
- ConvertMessageToTableRow/JsonToTableRow/JsonToTableRow.out0
- 写入成功记录/streaminginsert/StreamingWriteTables/StreamingWrite.out1
{httpRequest={cacheLookup=true, remoteIp=X, requestMethod=GET, requestSize=42, requestUrl=https://my.tracking-pixel.com/error?insertId=4&msg=new1234, responseSize=789, status=200, userAgent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36},
insertId=17ktmayg1nsocji, jsonPayload={@type=type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry, statusDetails=response_sent_by_backend},
logName=projects/tracking/logs/requests,
receiveTimestamp=2019-08-20T08:39:25.712461786Z,
resource={labels={backend_service_name=, forwarding_rule_name=lbl-collect-pixel-forwarding-rule, project_id=tracking, target_proxy_name=lbl-collect-pixel-target-proxy, url_map_name=lbl-collect-pixel, zone=global},
type=http_load_balancer},
severity=INFO,
spanId=fa0cc3cdcb7e2592,
timestamp=2019-08-20T08:39:24.922424036Z,
trace=projects/tracking/traces/b335b1acfa78ad5447500cdcda747aa1}
这是我的错误信息
{
"errors" : [ {
"debugInfo" : "",
"location" : "logName",
"message" : "no such field.",
"reason" : "invalid"
} ],
"index" : 0
}
DataFlow正在尝试在我的表中添加logName属性,该表只有一个msg属性
现在,如何更改跟踪参数的摄取尝试,以使数据流正确地将其解析为所需的消息格式并将其插入表中
提前谢谢你的帮助
干杯,
wiroot提供给数据流的日志似乎有额外的字段。要确认这一点,请检查来自实际订阅的消息,并确保它没有任何附加字段。如果它有其他字段,那么您可以通过使用Beam编写自定义管道来过滤这些字段。此外,Stackdriver向实际日志添加了一些元数据,如logName等,这可能是这些额外字段的来源。我共享的有效负载字符串是通过发布/订阅主题发布的数据。谢谢你,安克尔,你指着光束。从解析到摄取,这似乎是创建我自己的定制管道的正确方法。我现在正在quicklabs.com上跟踪我的第一次管道尝试的示例。似乎提供给dataflow的日志有额外的字段。要确认这一点,请检查来自实际订阅的消息,并确保它没有任何附加字段。如果它有其他字段,那么您可以通过使用Beam编写自定义管道来过滤这些字段。此外,Stackdriver向实际日志添加了一些元数据,如logName等,这可能是这些额外字段的来源。我共享的有效负载字符串是通过发布/订阅主题发布的数据。谢谢你,安克尔,你指着光束。从解析到摄取,这似乎是创建我自己的定制管道的正确方法。我现在正在quicklabs.com上跟踪我的第一次管道尝试的样本。