ジョブを編集する際に、ジョブパラメーターで時間変数のワイルドカードを設定できます。
変数ワイルドカードのフォーマット
E-MapReduce は、${dateexpr-1d} または ${dateexpr-1h} というフォーマットの変数ワイルドカードをサポートしています。これらのフォーマットでは、dateexpr は標準の時間フォーマット式を表します。次の表に、フォーマット指定子を示します。
重要 時間フォーマット指定子では、大文字と小文字が区別されます。
| フォーマット | 説明 |
| yyyy | 年 (4 桁の数字)。 |
| MM | 月 (2 桁の数字、01~12)。 |
| dd | 日 (2 桁の数字、01~31)。 |
| HH | 時 (24 時間形式、00~23)。12 時間形式の場合は hh を使用します。 |
| mm | 分 (2 桁の数字、00~59)。 |
| ss | 秒 (2 桁の数字、00~59)。 |
時間変数は、yyyy を含む時間指定子の任意の組み合わせにすることができます。プラス (+) 記号とマイナス (-) 記号を使用して、時間オフセットを指定できます。たとえば、変数 ${yyyy-MM-dd} が現在の日付を表す場合:
- 1 日後: ${yyyyMMdd+1d} または ${yyyy-MM-dd hh:mm:ss+1d}。
- 3 時間後: ${yyyyMMddHH+3h} または ${yyyy-MM-dd hh:mm:ss+3h}。
- 5 日前: ${yyyyMMdd-5d} または ${yyyy-MM-dd hh:mm:ss-5d}。
たとえば、現在の時刻が 20160427 12:08:01 であるとします:
- ジョブパラメーターに ${yyyyMMdd HH:mm:ss-1d} を入力すると、ランタイムで 20160426 12:08:01 に解決されます。この式は、現在の時刻から 1 日を減算し、秒単位の精度を維持します。
- 式 ${yyyyMMdd-1d} は、ランタイムで 20160426 に解決され、これは前日を表します。
- 式 ${yyyyMMdd} は、ランタイムで 20160427 に解決され、これは現在の日付を表します。
説明
- 現在、E-MapReduce は日と時間のオフセットのみをサポートしています。つまり、変数のオフセット部分は、
+Nd、-Nd、+Nh、または-Nhのフォーマットを使用する必要があります。ここで、Nは整数です。 - 時間変数パラメーターは、${yyyy-MM} のように yyyy で始まる必要があります。月など、特定の時間コンポーネントを抽出する場合は、ジョブコンテンツで次の関数を使用します:
parseDate(<parameter_name>, <time_format>): 指定されたパラメーターを Date オブジェクトに変換します。<parameter_name> は、[設定パラメーター] セクションで設定した変数の名前です。<time_format> は、変数を設定したときに使用した時間フォーマットです。たとえば、変数 current_time = ${yyyyMMddHHmmss-1d} を設定した場合、時間フォーマットはyyyyMMddHHmmssに設定する必要があります。formatDate(<Date_object>, <time_format>): Date オブジェクトを時間文字列にフォーマットします。
例:current_time変数から時間の値を取得する: ${formatDate(parseDate(current_time, 'yyyyMMddHHmmss'), 'HH')}current_time変数から年の値を取得する: ${formatDate(parseDate(current_time, 'yyyyMMddHHmmss'), 'yyyy')}
操作手順
-
データプラットフォームのプロジェクトページに移動します。
-
Alibaba Cloud アカウントを使用して E-MapReduce コンソールにログインします。
-
上部のナビゲーションバーで、リージョンとリソースグループを選択します。
-
Data Development タブをクリックします。
-
- Projects ページで、目的のプロジェクトを見つけ、[操作] 列の [ジョブの編集] をクリックします。
- ジョブ設定を構成します。
- [ジョブの編集] ページで、目的のジョブを選択し、右上隅の [ジョブ設定] をクリックします。
- 設定パラメーター セクションで、
アイコンをクリックしてパラメーターを追加し、変数ワイルドカードフォーマットを使用してパラメーターを設定します。
たとえば、dy_dateという名前のパラメーターを追加した場合、--hiveconf date=${dy_date}のように、ジョブコンテンツでこのパラメーターを${dy_date}として参照できます。これで、パラメーターをジョブコンテンツで参照できるようになります。