我已根据此link为BigQuery数据访问日志设置了日志导出。
在我的用例中,客户无权直接访问BigQuery。他们调用REST API从BigQuery获取数据并将其提供给客户端。我需要记录一些自定义信息,例如请求数据的用户ID等,以及BigQuery数据访问日志。
我尝试使用userAgent
字段,通过使用用户ID设置应用程序名称,但它没有显示在数据访问日志中。
有没有办法在数据访问日志中记录自定义信息?
答案 0 :(得分:2)
以下是我看到的一些选项。
1 - 使用jobReference.jobId
作业的属性
您可以将其设置为包含在作业API调用时可用的任何信息
jobReference.jobId string [Required] The ID of the job. The ID must contain
only letters (a-z, A-Z), numbers (0-9),
underscores (_), or dashes (-).
The maximum length is 1,024 characters.
我认为1024个字符足以编码您需要的任何元数据
2 - 另一个选择是使用configuration.labels
作业属性。
configuration.labels object [Experimental] The labels associated with this job.
You can use these to organize and group your jobs.
Label keys and values can be no longer than 63
characters, can only contain lowercase letters, numeric
characters, underscores and dashes. International
characters are allowed. Label values are optional.
Label keys must start with a letter and each label in
the list must have a different key.
您可以在Labeling Datasets
了解有关labeling
的更多信息。即使它描述了数据集的标签 - 它与用于作业的概念完全相同
最后,我建议避免调整用户的查询 - 特别是为了插入一些元数据
答案 1 :(得分:1)
您可以添加自定义数据作为对查询的评论吗?
# hello, I'm a comment and I have meta-data
SELECT * FROM `wherever`
请注意第一行,因为您可以使用它来请求BigQuery在#legacySQL和#standardSQL之间做出选择
#standardSQL
# for metadata, respect the first line of the query to choose SQL variant
# hello, I'm a comment and I have meta-data
SELECT * FROM `wherever`