如何在 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 自定义维度?

自定义注解+AOP记录访问日志

如何在 Haskell 中访问没有记录语法的自定义数据类型的字段?

如何在 Data Studio 数据源列表中轻松找到直接 BigQuery 表数据源与自定义查询数据源?

如何将数据洞察控件传递给 BigQuery 自定义查询

Python日志记录:如何向LogRecord添加自定义字段,并注册全局回调以设置其值