ETL中为什么使用参数变量

  • 实现ETL的复用
  • D,Q,P环境不同,使用变量方便发布
  • 有的条件需要外部传入
  • 增量ETL
  • 灵活性强

kettle中参数变量种类

  • Environment Variables
  • Kettle Variables
  • Internal Variables
  • Transformation中的变量
  • Job中的变量

Environment Variables

通过Set Environment Variables设置

固定值无法动态使用

Kettle Variables

  • 主要设置在kettle.properties文件中设置,路径为:${KETTLE_HOME}\kettle.properties
  • 主要存放PDI的通用参数,我们在新建数据库时,不希望一直在相关组件输入用户名、密码等信息,也会运用于数据库连接,有时候也会运用与同一个系列JOB的过滤条件
  • 配置方式:直接在kettle.properties中添加通过客户端修改

Internal Variables




${Internal.Entry.Current.Directory}
这个参数表示当前的实体保存的位置,比如在Job中使用,则表示Job保存的位置,Transformation中表示Transformation的位置。

一般用在Transformation Executor 及Job Executor组件中指定需要执行的Job或者Transformation的位置,推荐使用这种方式。上线时不会因为是绝对路径造成ETL执行出错。

Transformation中的参数变量

KTR:SET_DELTA_POINT.ktr
在transformation属性配置中可以设置变量

Table input中的绑定变量以及execute for each row

需要注意从上一个step过来的数据,当没有勾选execute for each row时只能为一条,勾选后每一条这个step以及之后的都会运行一遍

  • 使用变量的顺序与从上一个step流入的字段顺序一样数据类型一样
  • SQL 中用问号代表参数
    -

Table input中SQL使用变量



通过${VARIABLE} %%VARIABLE%%两种方式使用变量在SQL处,需要勾选Replace Variables in script

凡是带有方块图标的文本框中都可以通过${VARIABLE} %%VARIABLE%% 使用变量。

Transformation中的set variable

这个通常是单独设置一个transformation然后给与JOB中的其他transformation使用
变量的生效范围有4种,具体可以自己试试,基本上选root

  • vaild in the root job在根JOB中生效
  • Valid in the parent job在父节点生效
  • Valid in the Java Virtual Machine在整个JAVA虚拟机中生效(只有几个transform时基本上测试结果一样。没深入研究)
  • Valid in the grand-parent job在父节点的父节点生效

Transformation中的get variable

  • 可以获取Set variable设置的变量但两个Step不能在同一个Transformation使用
  • Get variable 可以获取Job和Transformation在属性中设置的变量



KJB的参数变量

KJB:sj_sheet_job.kjb
在JOB属性配置中设置变量

JOB中的set variable

同transformation中的set variable差不多
增加一个功能能从其他文本中直接获取变量,不需要从上一个step中取到,在一些场景中比较方便

Transformation之间的值传递

Transformation Step中的数据可以传递给Transformation Executor,在Transformation Executor 调用的组件中可以直接当变量使用:通过${VARIABLE}或者%%VARIABLE%% 使用;通过Get variable组件使用等

kettle中变量生效优先级
在变量名字一样的情况下 set variable>kjb变量>全局变量
如内容有错欢迎大家指正!!!
读后有疑问请加QQ群,来聊一聊开源kettle+pentaho report designer那些事!作者个人qq:420773639

kettle介绍-参数变量的更多相关文章

  1. Shell 环境变量 & 参数变量

    环境变量 $HOME 当前用户的家目录 $PATH 以冒号分隔的用来搜索命令的目录列表 $PS1 命令提示符,通常是$字符,但在bash中,可以使用一些更复杂的值.例如,字符串[\u@\h \w]$就 ...

  2. Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数

    Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数 7.4.4  为外部参数设置默认值 开发者也可以对外部参数设置默认值.这时,调用的时候,也可以省略参数传递本文选自Swift1 ...

  3. 【shell点滴】参数变量

    参数变量故名思议就是用来操作输入参数的变量,知道用户输入了哪些参数,才可以进行相应的处理. 参数变量 作用 $1,$2- 取第几个参数的意思 $* 取出所有的参数,解析参数的分割符环境变量 IFS 来 ...

  4. ASP.NET Core中使用GraphQL - 第五章 字段, 参数, 变量

    ASP.NET Core中使用GraphQL ASP.NET Core中使用GraphQL - 第一章 Hello World ASP.NET Core中使用GraphQL - 第二章 中间件 ASP ...

  5. 常见问题一之拼接表格 js传递参数变量 Json接收值

    1.前台拼接表格时,有时候需要使用拼接html字符串,需要多次循环拼接的,放在方法里边: //ary可以是数组中的一组数据.function(ary){var MyHtml="<tr& ...

  6. mysql不重启修改参数变量

    分享下mysql不重启的情况下修改参数变量的方法. 通常来说,更新mysql配置my.cnf需要重启mysql才能生效,但是有些时候mysql在线上,不一定允许你重启,这时候应该怎么办呢? 例子: m ...

  7. linux bash shell编程之参数变量和流程控制。

    参数变量:用来向脚本中传递参数 我们在执行脚本的时候可以在其后面加入一些参数,通常来说这些参数与脚本中变量为对应关系. start.sh argu1 argu2 引用方式: $1,,2,……${10} ...

  8. 笨办法学python3练习代码13-14:argv参数变量的学习

    ex13.py  argv参数的学习 #argv:参数变量(argument variable),这是一个标准的编程术语,在其他语言中也可可以看到.argument可译为: 参数 #如果参数是用户在执 ...

  9. kettle中参数和变量的区别

    图一: 图二: 何时使用'?'何事使用${}应当根据情况: 在图二中使用的是${}因为此时没有"作为参数的字段",所以只能用el表达式直接获取其值,在图一中有"作为参数的 ...

  10. kettle介绍

    Kettle也叫PDI,在2006年Kettle加入了开源的BI组织Pentaho,正式命名为PDI,英文全称为Pentaho Data Integeration.Kettle是"Kettl ...

随机推荐

  1. 腾讯云HAI与DeepSeek携手打造私有化高效代码助手

    今天,我们依然以DeepSeek-R1大模型为核心,继续探索其在实际场景中的可用性.今天的重点将放在基于DeepSeek-R1大模型,结合JetBrains IDEA 插件代码助手(CodeGPT)进 ...

  2. Linux systemd服务

    Linux systemd服务 systemctl命令 systemctl是systemd的主命令,用于管理系统和服务.以下是一些常用的systemctl命令: 查看服务状态:systemctl st ...

  3. MySQL主从复制-原理实战

    一.原理 主从复制架构图:主从复制原理: Mysql 中有一种日志叫做 bin 日志(二进制日志).这个日志会记录下所有修改了数据库的SQL 语句(insert,update,delete,creat ...

  4. Maven配置多仓库

    一.配置说明 <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="htt ...

  5. PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?

    在之前的三篇文章中,笔者介绍了有关DeepSeek的基础操作,满足了不同类型的用户需求. 想利用大模型构建属于自己的智能知识库,无论你是想私有化部署,还是直接使用API调用,都可以在这三篇文章中找到答 ...

  6. [luogu1248] 加工生产调度 题解

    考虑 \(i\) 排在 \(j\) 前的条件是 \(a_i+\max(a_j,b_i)+b_j\le a_j+\max(a_i,b_j)+b_i\),然后发现这一坨东西是皇后游戏中的倒数第三个式子,直 ...

  7. SWD下载口的端口状态

    1.关于SWD SWD下载口的端口状态:SWD为上拉,SWC为下拉. SWD是MCU下载程序和调试的端口,分为四线制和五线制 四线制:VCC GND SWDIO SWCKL 五线制:VCC GND S ...

  8. java推送企业微信消息

    <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcl ...

  9. 八米云-各种小主机x86系统-小白保姆式超详细刷机教程

    疑难解答加微信机器人,给它发:进群,会拉你进入八米交流群 机器人微信号:bamibot 简洁版教程访问:https://bbs.8miyun.cn 准备工作 说明: 1.小节点X86 单线500M以下 ...

  10. Edge浏览器网站页面如何设置自动刷新

    1.浏览器设置 要在Edge浏览器中设置网站页面自动刷新,可以按照以下步骤操作: 打开Edge浏览器,进入你想要自动刷新的网站页面. 在地址栏上方点击"设置和更多选项"(三个水平点 ...