提问者:小点点

如何在大查询查询中使用标签来跟踪成本?


是否可以使用查询请求上的配置.标签属性来跟踪bigquery查询的成本?我已经指定了一些标签,并且我确实在作业定义中找到了它,如您所见:

{
  "configuration": {
    "labels": {
      "label1": "tomas",
      "label2": "yolo"
    },
    "query": {
      "allowLargeResults": false,
      "createDisposition": "CREATE_IF_NEEDED",
      "destinationTable": {
        "datasetId": "dataset",
        "projectId": "project name",
        "tableId": "label "
      },
      "priority": "INTERACTIVE",
      "query": "a select query",
      "useLegacySql": false,
      "writeDisposition": "WRITE_TRUNCATE"
...
}

我在计费下也开启了计费导出,但是当我查看导出的数据时,我找不到我的标签。

标签在应用于数据集和表时工作正常,但我无法让它与查询一起工作。这些查询标签是别的东西吗,不会显示在账单中?


共3个答案

匿名用户

您可以通过将以下内容添加到查询中来添加查询标签(key: value):

SET @@query_label = "label_key:label_value";

SELECT *
FROM your_project_id.your_dataset.your_table;

这将更改系统变量@@query_label,另请参阅:
https://cloud.google.com/bigquery/docs/adding-labels#adding-label-to-sessionhttps://cloud.google.com/bigquery/docs/reference/system-variables

设置@@query_label将创建一个没有key: value标签的parent_job,但它也将创建一个具有key:value标签的子作业。

您可以看到,在查询信息模式以深入了解查询详细信息时(您需要适当的授权才能执行此查询):

SELECT creation_time, job_id, parent_job_id, user_email, labels, query, total_bytes_billed
FROM `your_project_id.region-eu.INFORMATION_SCHEMA.JOBS`
WHERE creation_time >= '2022-12-06'
ORDER BY creation_time DESC

匿名用户

我一直无法查询或过滤特定的标签,但至少可以用这个显示它们…

SELECT  service.description, cost, labels
FROM `PROJECTNAME.billing_report.gcp_billing_export_v1_016D47_E84908_9F5AB5` 
WHERE cost > 0
LIMIT 1000

匿名用户

如果您使用bq命令,您可以通过添加--label标志来做到这一点,如下所示

bq query \
--nouse_legacy_sql \
--label foo:bar \
'SELECT COUNT(*) FROM `bigquery-public-data`.samples.shakespeare'

然后,您可以在云日志中发出以下过滤器

resource.type="bigquery_resource"
protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.labels.foo="bar"

对于API或客户端库,请选中此对象