如何在BigQuery数据访问日志中记录自定义信息?

时间:2017-03-15 06:19:58

标签: java google-app-engine logging google-bigquery

我已根据此link为BigQuery数据访问日志设置了日志导出。

在我的用例中,客户无权直接访问BigQuery。他们调用REST API从BigQuery获取数据并将其提供给客户端。我需要记录一些自定义信息,例如请求数据的用户ID等,以及BigQuery数据访问日志。 我尝试使用userAgent字段,通过使用用户ID设置应用程序名称,但它没有显示在数据访问日志中。

有没有办法在数据访问日志中记录自定义信息?

2 个答案:

答案 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`