AIRFLOW:在 jinja 模板中为 {{ds}} 使用 .replace() 或relativedelta()

2024-04-22

我的目标是根据气流宏变量 {{ds}} 返回上个月的第一天并使用它,例如在 Hive 操作符中。

例如。对于 ds = 2020-05-09 我预计返回:2020-04-01

我找到并尝试的解决方案是:

SET hivevar:LAST_MONTH='{{ (ds.replace(day=1) - macros.timedelta(days=1)).replace(day=1) }}';
SET hivevar:LAST_MONTH='{{ ds + macros.dateutil.relativedelta.relativedelta(months=-1, day=1) }}'

但两者都导致了错误:

Error rendering template: replace() takes no keyword arguments 

Error rendering template: must be str, not relativedelta 

并且渲染时没有显示任何日期。

我究竟做错了什么?


您可以使用:

{{ (execution_date + macros.dateutil.relativedelta.relativedelta(months=-1, day=1)).strftime("%Y-%m-%d") }}

Example:

from airflow.operators.bash_operator import BashOperator
default_args = {
    'owner': 'airflow',
    'start_date': datetime(2020, 4, 1),

}
with DAG(dag_id='stackoverflow',
         default_args=default_args,
         schedule_interval=None,
         catchup=False
         ) as dag:
    run_this = BashOperator(
        task_id='example',
        bash_command='echo ds is {{ ds }} modified ds is {{ (execution_date + macros.dateutil.relativedelta.relativedelta(months=-1, day=1)).strftime("%Y-%m-%d") }}',
    )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AIRFLOW:在 jinja 模板中为 {{ds}} 使用 .replace() 或relativedelta() 的相关文章

随机推荐

  • 套接字通信中send()和recv()的行为

    以下是设置 Server Client accept connect v send msg1 gt v v recv lt send v v send msg2 gt recv v v close 这是我的问题 1 客户端在关闭之前其实就收
  • 如何从 BHO 将图像嵌入网页?

    我有一个用 C 编写的 BHO 库 mybho dll 我嵌入了一个资源文件 image png 我想在某些页面上显示此图像 根据我读到的内容 它应该看起来像这样 img src 但 Internet Explorer 找不到该图像 我尝试
  • 如何在 Laravel 中创建模型?

    我在正确理解 Laravel 模型时遇到一些困难 我们以框架提供的默认模型为例 这是模型的全部内容 User php
  • python 中的 Coinbase APIerror(id = )

    我想在我的 coinbase 账户之间转账 我正在存储我所有帐户的 IDclient get accounts data id 并使用代码进行传输 tx client transfer money 2bbf394c 193b 5b2a 91
  • Azure DevOps 多个自定义条件

    我在 azure devops 中有 2 个变量 Var1 A B C Var2 1 2 我需要在以下条件下运行任务 Var1 A B C Var2 1 2 Var1 A Var2 1 来自我只能看到更简单的自定义条件 like and s
  • 如何为 Azure 上的 Node.js Api 应用程序启用 BLOB 日志记录?

    我在 azure 上有一个 node js api 应用程序 我用bunyan将每个请求记录到sdtout 如何保存和读取日志文件 我启用了 BLOB 日志记录 我的存储中唯一显示的是一堆 csv 文件 这是一个例子 date level
  • 有没有办法在模拟器中将 ro.kernel.qemu 设置为 0?

    我替换了修改后的 build prop 其中包含ro kernel qemu 0用 yaffey 到 system img 但它不起作用 当模拟器重新启动时 ro kernel qemu 1仍然存在于输出中adb shell getprop
  • 如何使用WinAPI识别光驱中的光盘类型?

    我正在编写一个适用于音频 CD 和混合 CD 的应用程序 我想要一种方法来确定应用程序使用的驱动器中当前是否存在音频或混合类型 至少有一个音轨 光盘 到目前为止 我能够通过以下方式识别该驱动器是CD ROMGetDriveType 然而 事
  • Html:对于 Select multiple,仅提交一个值,但 .val() 返回两个值的数组

    渲染页面时 val 多重选择的设置为单个值 例如 my select box val 1 然后用户在多选框中选择附加值 提交表单时 仅提交新选择的值 而不提交先前设置的值 而在 Firefox 中调试时 val 函数返回一个包含两个值的数组
  • Vuejs $emit 不会在回调时触发

    在下面的代码中 export default props note methods remove NoteRepo remove this note err gt if err console log Should Fire this em
  • 源和目标具有不同的 EABI 版本

    我正在尝试使用 ARM 工具链编译 so 文件 但是我不断收到这个错误 错误 源对象的 EABI 版本为 0 但目标对象的 EABI 版本为 5 我无法更改工具链中的任何内容 因为我必须使用给定的工具链 我以前从未见过这个错误 我使用了这个
  • “私人套餐”是什么意思? [复制]

    这个问题在这里已经有答案了 请看示例 private package com xm aws import static com xml aws PcgTest test public class PackageTest public sta
  • 比较 timespec 值

    比较两个 timespec 值以查看哪个先发生的最佳方法是什么 下面这句话有什么问题吗 bool BThenA timespec a timespec b Returns true if b happened first b will be
  • 按索引列和行对 data.table 进行子集化

    我希望通过更改列的索引来递归地对数据表进行子集化z并且同时根据某些条件过滤行 in 基向量 dt lt setDT copy diamonds dt lt setDT data frame lapply dt as character st
  • Azure EventGrid Webhook 超时

    从文档中得知 webhook 的超时时间为 60 秒 如果是这样的话 那么我们是否期望开发人员进行异步操作 我的意思是 如果我想要作为 Webhook 的一部分完成的工作需要超过 60 秒怎么办 但是 如果我们将该操作设为异步 并且我想要作
  • 使用 Python 绑定在 Selenium 中发送键控制 + 单击

    我需要使用 Selenium 在新选项卡中打开链接 那么是否可以在 Selenium 中对元素执行 ctrl click 以在新选项卡中打开它 Use an ActionChain with key down按控制键 然后key up释放它
  • 使用 iPhone 作为热点时 TCP 连接无法正常工作

    我正在开发一个 iOS 应用程序 它通过 TCP 套接字连接到在 Android 上运行的服务器应用程序 为了找到第二个设备的 IP 我使用 UDP 请求并接收服务器的 IP 当我将它们连接到 Wi Fi 网络或使用 Android 设备作
  • 如何判断当前应用程序是否为中等信任

    我试图确保我的 ASP Net 库能够在中等信任下工作 然而 我遇到了问题 因为如果代码在中等信任度下运行 我需要禁用一些代码 如何从 C 确定当前应用程序是否为中等信任 具体来说 我正在尝试从 web config 读取 customEr
  • Angularjs JSONP 不工作

    我可能在这里遗漏了一些东西 但我无法使这个 JSONP 请求工作 这里是代码 var url http server callback JSON CALLBACK http jsonp url success function data c
  • AIRFLOW:在 jinja 模板中为 {{ds}} 使用 .replace() 或relativedelta()

    我的目标是根据气流宏变量 ds 返回上个月的第一天并使用它 例如在 Hive 操作符中 例如 对于 ds 2020 05 09 我预计返回 2020 04 01 我找到并尝试的解决方案是 SET hivevar LAST MONTH ds