在作業編輯的過程中,支援在作業參數中設定時間變數萬用字元。
變數萬用字元格式
E-MapReduce所支援的變數萬用字元的格式為${dateexpr-1d}或者${dateexpr-1h}。其中dateexpr表示標準的時間格式運算式,對應的規則如下。
重要 請注意時間格式的大小寫。
格式 | 描述 |
yyyy | 表示4位的年份。 |
MM | 表示月份。 |
dd | 表示天。 |
HH | 表示24小時制,12小時制使用hh。 |
mm | 表示分鐘。 |
ss | 表示秒。 |
時間變數可以是包含yyyy年份的任意時間組合,同時支援用加號(+)和減號(-)來分別表示延後和提前。例如,變數${yyyy-MM-dd}表示當前日期,則:
- 後1年的表示方式:${yyyy+1y}或者${yyyy-MM-dd hh:mm:ss+1y}。
- 後3月的表示方式:${yyyyMM+3m}或者${yyyy-MM-dd hh:mm:ss+3m}。
- 前5天的表示方式:${yyyyMMdd-5d}或者${yyyy-MM-dd hh:mm:ss-5d}。
例如,假設目前時間為20160427 12:08:01:
- 如果在作業參數中寫成${yyyyMMdd HH:mm:ss-1d},那麼這個參數萬用字元在真正執行的時候會被替換成20160426 12:08:01,即在當前日期上減了一天並精確到了秒。
- 如果寫成${yyyyMMdd-1d},則執行時會替換成20160426, 表示當前日期的前一天。
- 如果寫成${yyyyMMdd},則會被替換成20160427,直接表示當前的日期。
說明
- 目前E-MapReduce僅支援小時和天維度加減,即只支援在dateexpr後面+Nd、-Nd、+Nh、-Nh的形式(dateexpr為時間格式運算式,N為整數)。
- 時間變數參數必須以yyyy開始,如${yyyy-MM}。如果希望單獨擷取月份等特定時間地區的值,可以在作業內容中使用如下兩個函數提取:
- parseDate(<參數名稱>, <時間格式>):將給定參數轉換為Date對象。其中,參數名稱為上述配置參數中設定的一個變數名,時間格式為設定該變數時所使用的時間格式。如設定一個變數current_time = ${yyyyMMddHHmmss-1d},則此處時間格式應設定為yyyyMMddHHmmss。
- formatDate(<Date對象>, <時間格式>):將給定Date對象轉換為給定格式的時間字串。
函數使用樣本:- 擷取current_time變數的小時字面值:${formatDate(parseDate(current_time, 'yyyyMMddHHmmss'), 'HH')}
- 擷取current_time變數的年字面值:${formatDate(parseDate(current_time, 'yyyyMMddHHmmss'), 'yyyy')}
操作樣本
- 進入資料開發的專案列表頁面。
- 通過阿里雲帳號登入阿里雲E-MapReduce控制台。
- 在頂部功能表列處,根據實際情況選擇地區和資源群組。
- 單擊上方的資料開發頁簽。
- 在專案列表頁面,單擊目標專案所在行的作業編輯。
- 進行作業設定。
- 在作業編輯頁面,選擇需要操作的作業名稱,單擊右上方的作業設定。
- 在配置參數地區,單擊表徵圖,新增參數,並按照上文介紹的變數萬用字元格式填寫參數。
配置完成後就可以在作業中引用配置參數的Key了。