使用 Airflow BigqueryOperator 向 BigQuery 表添加标签

2024-05-01

我必须向 bigquery 表添加标签。我知道可以通过 BigQuery UI 来完成此操作,但如何通过气流运算符来完成此操作。

Use case:用于计费和搜索目的。由于多个团队在同一项目和数据集下工作,我们需要将各个团队创建的所有表组合在一起。由于每个团队的桌子都有不同的标签,因此标签对我们来说是必要的。

bq_query = BigQueryOperator(bql=sql,
                            destination_dataset_table='my_dataset.my_table'),
                            task_id='bq_query',
                            bigquery_conn_id='my_bq_connection',
                            use_legacy_sql=False,
                            write_disposition='WRITE_TRUNCATE',
                            create_disposition='CREATE_IF_NEEDED',
                            query_params={})

这里我想给这个目标表添加标签destination_dataset_table='my_dataset.my_table'

我确实按照此链接中提到的进行了尝试:https://airflow.apache.org/docs/apache-airflow/1.10.12/_api/airflow/contrib/operators/bigquery_operator/index.html#airflow.contrib.operators.bigquery_operator.BigQueryOperator.template_fields https://airflow.apache.org/docs/apache-airflow/1.10.12/_api/airflow/contrib/operators/bigquery_operator/index.html#airflow.contrib.operators.bigquery_operator.BigQueryOperator.template_fields

from airflow import models, DAG
from airflow.contrib.operators import bigquery_operator, bigquery_to_gcs, bigquery_table_delete_operator
from airflow.operators.python_operator import PythonOperator



# Define Airflow DAG
with dag:

    bq_query = BigQueryOperator(sql='<some query>',
                                destination_dataset_table='my_dataset.my_table'),
                                task_id='bq_query',
                                use_legacy_sql=False,
                                write_disposition='WRITE_TRUNCATE',
                                create_disposition='CREATE_IF_NEEDED',
                                labels={'project_id': 'project_name', 'dag_id': 'dag_name', 'task_id': 'task_name'}
                                query_params={})

EDIT

注:定义labels 根据文档,BigqueryOperator 和 BigqueryCreateExternalTableOperator 是不同的。

BigqueryOperator 的标签定义是a dictionary containing labels for the job/query, passed to BigQuery一切进展顺利。但我想在创建表时为其添加一个标签。

我们广泛使用BigqueryOperator并且不能使用BigqueryCreateExternalTableOperator

是否可以使用 BigqueryOperator?或解决方法


与班级airflow.contrib.operators.bigquery_operator.BigQueryOperator你在使用时,可以使用参数标签。可以看到支持的参数。

labels– 包含作业/查询标签的字典,传递给 BigQuery

classairflow.contrib.operators.bigquery_operator.BigQueryOperator(bql=None, sql=None, destination_dataset_table=None, write_disposition='WRITE_EMPTY', allow_large_results=False, flatten_results=None, bigquery_conn_id='bigquery_default', delegate_to=None, udf_config=None, use_legacy_sql=True, maximum_billing_tier=None, maximum_bytes_billed=None, create_disposition='CREATE_IF_NEEDED', schema_update_options=, query_params=None, labels=None, priority='INTERACTIVE', time_partitioning=None, api_resource_configs=None, cluster_fields=None, location=None, encryption_configuration=None, *args, **kwargs)

你可以使用这个类airflow.contrib.operators.bigquery_operator.BigQueryCreateExternalTableOperator 创建带有标签的表

labels– 包含表标签的字典,传递给 BigQuery

classairflow.contrib.operators.bigquery_operator.BigQueryOperator(bql=None, sql=None, destination_dataset_table=None, write_disposition='WRITE_EMPTY', allow_large_results=False, flatten_results=None, bigquery_conn_id='bigquery_default', delegate_to=None, udf_config=None, use_legacy_sql=True, maximum_billing_tier=None, maximum_bytes_billed=None, create_disposition='CREATE_IF_NEEDED', schema_update_options=, query_params=None, labels=None, priority='INTERACTIVE', time_partitioning=None, api_resource_configs=None, cluster_fields=None, location=None, encryption_configuration=None, *args, **kwargs)
template_fields= ['bql', 'sql', 'destination_dataset_table', 'labels']

你可以看到更多信息 https://airflow.apache.org/docs/apache-airflow/1.10.12/_api/airflow/contrib/operators/bigquery_operator/index.html#airflow.contrib.operators.bigquery_operator.BigQueryCreateEmptyTableOperator.template_fields关于这两门课。

EDIT

你可以看看这个例子。

   bq_query = BigQueryOperator(bql=sql,
                                destination_dataset_table='my_dataset.my_table'),
                                task_id='bq_query',
                                bigquery_conn_id='my_bq_connection',
                                use_legacy_sql=False,
                                write_disposition='WRITE_TRUNCATE',
                                create_disposition='CREATE_IF_NEEDED',
                                template_fields= ['dataset_id', 'table_id', 'project_id', 'gcs_schema_object', 'labels']
                                query_params={})

你可以看到这个example https://airflow.apache.org/docs/apache-airflow/1.10.12/_modules/airflow/contrib/operators/bigquery_operator.html#BigQueryCreateEmptyTableOperator.template_fields关于如何使用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Airflow BigqueryOperator 向 BigQuery 表添加标签 的相关文章

随机推荐

  • Eclipse 在不存在的断点处停止

    我有一个 Eclipse java 项目 它在不存在的断点处停止 这个位置曾经有一个断点 但我把它删除了 有什么想法为什么会发生这种情况吗 注意 这与这里提到的问题不同 幻象断点让我发疯 https stackoverflow com qu
  • 如何在 Vim 中转置文件中的行和列的内容?

    我知道我可以使用 Awk 但我使用的是 Windows 机器 并且我正在为可能没有 Awk 的其他人创建一个函数 我也知道我可以编写 C 程序 但我不希望我正在制作的 Vim 实用程序需要编译和维护 原始文件可能是 THE DAY WAS
  • Rmarkdown:同一页面上的多个图具有单独的标题

    我正在用 R markdown 编写一份带有 pdf 输出的报告 我有几个图 我想在 2x2 矩阵中每页显示四个图 有没有办法让它们像这样显示并带有单独的标题 这是我到目前为止所尝试过的 包 gridExtra 我可以轻松设置我想要的布局
  • jquery给输入框添加百分号

    我想要一个输入框 在输入数字时自动向用户添加可见的百分号 而不仅仅是在提交时将其识别为百分比 因此 用户点击 2 并看到 2 我假设人们可以使用 Jquery 相当轻松地做到这一点 但我不知道如何做 有任何想法吗 感谢大家 您可以处理cha
  • 使用 React Hooks 输入千位分隔符

    我想使用 React Hooks 在输入上添加千位分隔符 但我不知道如何操作 到目前为止我已经尝试过下面的代码但不起作用 您能否指出可能出现的问题以及我该如何实施 谢谢 const MainComponent gt const value
  • 表达式树序列化器

    我想在客户端使用 Linq 表达式 序列化它们并在服务器端执行它们 为此我想使用 http expresstree codeplex com http expressiontree codeplex com 但我想针对自己的 WCF 调用执
  • jquery 克隆组合框无法运行

    我有下表 当我按下第一个按钮时 我调用 jquery 来克隆第一行并添加新行 table class table table striped table bordered bootstrap datatable style font siz
  • 论文中的概率密度函数,使用 C++ 实现,未按预期工作

    所以我正在实现一个启发式算法 并且我遇到了这个函数 我有一个 1 到 n 的数组 C 上的 0 到 n 1 w e 我想选择一些要复制到另一个数组的元素 给定参数 y 0 根据作者的说法 l 是一个随机数 0 所以我编写了函数的第一部分 对
  • Django 添加类到表单 字段

    我们正在寻找一种解决方案 将 CSS 类属性添加到 Django 表单的
  • 在 Makefile 的先决条件列表中使用目标的目录路径

    我编写了一个脚本 它接收两个以 cfg 结尾的文件并输出一个以 cmp 结尾的文件 我想将其包含在我的 Makefile 中 因为一些源代码文件依赖于此 cmp 文件 在我的 Makefile 中 我想这样做 cmp cfg dir def
  • Spring休眠异常

    当我启动 SpringMVC 时 出现以下异常 Apr 28 2012 6 08 23 PM org apache catalina core AprLifecycleListener init INFO The APR based Apa
  • 如何让 Docker 容器访问主机上的 dnsmasq 本地 DNS 解析器?

    Docker 容器可能会通过多种方式对 DNS 设置感到困惑 只需在 SO 或更广泛的互联网上搜索 Docker DNS 即可了解我的意思 建议的常见解决方法之一是 将 dnsmasq 设置为主机系统上的本地 DNS 解析器 将其绑定到do
  • 使用 Google Collections 创建弱多重地图

    是否有与 MultiMaps 的 MapMaker 相当的工具 目前我像这样创建缓存 public static Map
  • 带有checked和after标签的css表单复选框样式[重复]

    这个问题在这里已经有答案了 我正在尝试在不使用 JavaScript 或 JQuery 的情况下设计一个表单 它包括一系列复选框 这个想法是如果未选中复选框 则在复选框后显示某个 gif 否则 后面不显示任何内容 这是我的代码 input
  • 设计 XML 模式的最佳实践是什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 作为一名业余软件开发人员 我仍在学术界 我编写了一些 XML 文档模式 我经常遇到导致 XML 文档难看的设计错误 因为我不完全确定
  • pandas_datareader 无法在 jupyter-notebook (Anaconda) 中工作

    ModuleNotFoundError Traceback 最近一次调用最后一次 在 3 从matplotlib导入样式 4 将 pandas 导入为 pd gt 5 将 pandas datareader data 导入为 web 6 7
  • 匹配 MySQL 中单词/后缀的相似/变体

    我如何匹配 MySQL 中单词的变体 例如搜索 accountancy 应匹配 accountant accountants accounting 等 我使用共享主机 因此无法向 MySQL 添加任何功能 例如 levenshtein 我想
  • 如何在 Android 上的 SharedPreferences 中保存/存储对象?

    我需要在很多地方获取用户对象 其中包含很多字段 登录后 我想保存 存储这些用户对象 我们如何实现这样的场景呢 我无法像这样存储它 SharedPreferences Editor prefsEditor myPrefs edit prefs
  • 如何安装和使用 YAML-Cpp

    我想学习 YAML 并将其与 C 一起使用 但我一直在尝试设置YAML Cpp 让我解释一下到目前为止我所做的事情 我下载了源代码 版本0 5 1 安装的 Cmake 适用于 Windows 安装了 Boost 库 为 Visual Stu
  • 使用 Airflow BigqueryOperator 向 BigQuery 表添加标签

    我必须向 bigquery 表添加标签 我知道可以通过 BigQuery UI 来完成此操作 但如何通过气流运算符来完成此操作 Use case 用于计费和搜索目的 由于多个团队在同一项目和数据集下工作 我们需要将各个团队创建的所有表组合在