如何在 BigQuery 数据访问日志中记录自定义信息?
Posted
技术标签:
【中文标题】如何在 BigQuery 数据访问日志中记录自定义信息?【英文标题】:How to log custom information in the BigQuery data access logs? 【发布时间】:2017-03-15 06:19:57 【问题描述】:我已按照link 为 BigQuery 数据访问日志设置了日志导出。
在我的用例中,客户无权直接访问 BigQuery。他们调用 REST API 从 BigQuery 获取数据并将其提供给客户端。我需要记录一些自定义信息,例如请求数据的用户 ID 等,以及 BigQuery 数据访问日志。
我尝试通过使用用户 ID 设置应用程序名称来使用 userAgent
字段,但它没有显示在数据访问日志中。
有没有办法在数据访问日志中记录自定义信息?
【问题讨论】:
【参考方案1】:以下是我看到的一些选项。
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
的更多信息。即使它描述了数据集的标签 - 它与 Jobs 使用的概念完全相同
最后,我建议避免调整用户的查询——尤其是为了插入一些元数据
【讨论】:
谢谢@Mikhail。如果我使用jobReference.jobId
字段,那么我还必须确保每次查询时都提供一个唯一的 ID,这是最好避免的额外并发症。而且configuration.labels
似乎没有记录在 BigQuery 数据访问日志中。
@SudarshanMurthy - 是的,您说得对,ID 在计费项目中必须是唯一的。根据我的实践 - 这根本不是问题:o)
谢谢@FelipeHoffa - 感谢您的投票。获得您和/或任何 BigQuery 团队成员的支持真的很特别!你做得很好!谢谢!【参考方案2】:
您可以添加自定义数据作为对查询的评论吗?
# 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`
【讨论】:
谢谢@Felipe。以上是关于如何在 BigQuery 数据访问日志中记录自定义信息?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 BigQuery 中使用 UDF 展平 Google Analytics 自定义维度?
如何在 Haskell 中访问没有记录语法的自定义数据类型的字段?