我在命名空间设置了一个运行时参数,即 business_date: ${logicalStartTime(yyyy-MM-dd)} 。我在我的管道中使用此参数,并希望在其他管道中使用相同的参数。背靠背有许多管道,我希望在第一个管道中计算后,整个管道的值都相同。假设该值计算为“2020-08-20 20:14:11”,一旦管道一成功,我将此参数传递给管道 2,但由于此参数是在命名空间级别定义的,因此当管道 2 启动时它会被覆盖。
我怎样才能防止这个值被再次计算?
我在命名空间设置了一个运行时参数,即 business_date: ${logicalStartTime(yyyy-MM-dd)} 。我在我的管道中使用此参数,并希望在其他管道中使用相同的参数。背靠背有许多管道,我希望在第一个管道中计算后,整个管道的值都相同。假设该值计算为“2020-08-20 20:14:11”,一旦管道一成功,我将此参数传递给管道 2,但由于此参数是在命名空间级别定义的,因此当管道 2 启动时它会被覆盖。
我怎样才能防止这个值被再次计算?
正如之前评论的那样,您可以设置一个管道来触发另一个管道;您可以在第一个管道中设置运行时变量,该变量将在触发的管道中设置。您可以按照以下步骤创建入站触发器:
附加信息
在这篇文章中,提到了可以通过三种方式设置管道的运行时参数:
@Sudhir,您可以探索偏好。https://cdap.atlassian.net/wiki/spaces/DOCS/pages/477561058/Preferences+HTTP+RESTful+API
您已在命名空间级别设置变量,并且根据您的发现,每次使用它时都会对其进行评估。
您可以尝试在应用程序级别设置它吗?并将其传递给下一个管道。我相信在这种情况下,它应该只在该特定应用程序(管道)中评估一次,然后将传递值。
偏好也可在程序级别获得。
您可以在第一个管道的文件中写下该值。在所有后续管道中,创建一个参数来读取该文件。这样,目标就应该达到了。