${name}のようなプレースホルダーを記述し、スケジューリングシステムがタスク実行前にそれを実際の値に置き換えます。カテゴリー | 定義 | 値の決定元 | 代表例 |
カスタムパラメータ | ユーザーがスコープに基づいて作成した名前付きパラメータ | ユーザーによる手動設定 | プロジェクトパラメータ ${project_param}、ワークフローパラメータ${workflow_param}、タスクパラメータ${task_param} |
システムパラメータ | プラットフォームに組み込まれ、実行時に自動的に注入されるパラメータ | スケジューリングシステムが自動生成します | 時間パラメータ ${yyyyMMdd}、コンテキストパラメータ${projectIdent} |
パラメータ受け渡し | 上流タスクの出力が下流タスクの入力として使用されます。 | 上流タスクの実行結果 | 上流タスクが mark_idを出力します。下流タスクがスケジュール設定 > パラメータ渡し > 親タスクパラメータの参照で参照関係を定義した後、コード内で${mark_id}を使用します。詳細はパラメータ渡しを参照してください。 |
${name}プレースホルダーです。ユーザーはSQL / Shell / Pythonなどのコードで同じ方法で記述するだけでよく、パラメータのソースを気にする必要はありません。${yyyyMMdd}のようなプレースホルダーは、Hive / Spark / Pythonのエグゼキューターに到達した時点で、すでに具体的な値(例えば20260507)に置き換わっています。これは、IDEでコードを直接デバッグ実行する場合、${name}は置換されないことを意味します。高度な実行でパラメータ値を指定するか、タスク/ワークフロー/プロジェクトレベルでデフォルト値を設定して効果を検証する必要があります。プロジェクトパラメータ(スコープ:プロジェクト配下のすべてのワークフロー / タスク)↓ワークフローパラメータ(スコープ:単一ワークフロー内のすべてのタスク)↓タスクパラメータ(スコープ:単一タスク)
pt_date = 20260101が定義され、あるワークフローでpt_date = 20260201が定義され、そのワークフロー内のあるタスクでpt_date = 20260301が定義されている場合、そのタスクの実行時に${pt_date}の実際の値は20260301になります(タスクパラメータが有効になります)。ニーズシーン | 推奨パラメータタイプ | 説明 |
複数のタスクで同じ値を共有します(テストデータベース名、共通パスなど)。 | プロジェクトパラメータ | 一箇所の変更で、プロジェクト全体に反映されます。 |
特定のワークフロー内の複数タスクで共有する値 | ワークフローパラメータ | スコープはワークフロー内に限定され、グローバルへの影響を防ぎます。 |
現在のタスクのみで使用する一時的な値 | タスクパラメータ | スコープが最も小さく、最も柔軟です。 |
業務日付に基づいてパーティションに動的に書き込みます(T+1など)。 | 時間パラメータ ${yyyyMMdd-1d} | システムが自動的に注入するため、メンテナンスは不要です。 |
コード内で現在のプロジェクト/ワークフロー/タスクの情報を取得します。 | コンテキストパラメータ ${projectIdent}など | システムが自動的に注入します。 |
上流タスクの計算結果が下流タスクの入力として使用されます。 | パラメータ受け渡し | SQLの結果、Shellの出力、Pythonのプリントなどをサポートします。 |
プロジェクト全体で「昨日」の日付をデフォルトの業務日付として統一して使用します。 | **プロジェクトパラメータ + 時間パラメータの組み合わせ** 例: pt_date = ${yyyyMMdd-1d} | 「集中メンテナンス」と「動的値取得」の両方の利点を兼ね備えています。 |
${yyyyMMdd-1d}を記述します。pt_dateを定義し、値を${yyyyMMdd-1d}に設定し、コードに${pt_date}を記述します。INSERT OVERWRITE TABLE dw.user_daily PARTITION(dt = '${pt_date}')SELECT * FROM ods.user_logWHERE dt = '${pt_date}';
${pt_date}はスケジューリングシステムによって自動的に前日の日付(例:20260506)に置き換えられ、データは対応するパーティションに書き込まれます。パラメータタイプ | 適用範囲 | 設定入口 |
プロジェクトパラメータ | 現在のプロジェクト内のすべてのワークフローとタスク | プロジェクト管理 > パラメータ設定 |
ワークフローパラメータ | 現在のワークフロー内のすべてのタスクノード | ワークフローキャンバス > 右側 > 一般設定 > ワークフローパラメータ |
タスクパラメータ | 現在の単一タスクノード | タスクノード > 右側 > タスク属性 > 基本情報 |
${パラメータ名}です。異なるスコープに同名のパラメータが存在する場合、タスクパラメータ>ワークフローパラメータ>プロジェクトパラメータの優先順位で有効になります。パラメータ名 | パラメータ値 |
pt_date | ${yyyyMMdd-1d} |
${pt_date}を使用するだけで、スケジューリングシステムが実行時間に基づいて前日の日付に自動的に解析します。その後、ビジネスルールが調整された場合(例:前々日に変更)、プロジェクトパラメータpt_dateの値を変更するだけで、プロジェクト内のすべてのタスクはコードを変更する必要がありません。${パラメータ名}を使用するだけでプロジェクトパラメータを参照できます。SQLタスクを例に挙げます:SELECT * FROM demo_bi.user_logWHERE dt = '${pt_date}';
${pt_date}はプロジェクトパラメータpt_dateに設定された値に置き換えられます。${パラメータ名}。demo_workflowでワークフローパラメータpg = test_dbを設定すると、ワークフロー内のHive SQLタスクは直接参照できます:SELECT * FROM ${pg}.user_logWHERE dt = '${pt_date}';
${pg}はワークフローパラメータを参照し、${pt_date}はプロジェクトパラメータを参照します。スコープの異なるパラメータは同じコード内で混在して使用できます。スケジューリングシステムが優先順位に従って自動的に解析します。key=value形式でパラメータを入力します。複数のパラメータを設定する場合は、;で区切ります。pt_date=20260507;qt=100
${パラメータ名}です。Hive SQLタスクを例に、タスクパラメータqt = 100を設定した後:SELECT * FROM demo_bi.user_logWHERE dt = '${pt_date}'AND user_id = ${qt};
${pt_date}はプロジェクトパラメータpt_dateの値として解析されます。${qt}はタスクパラメータqtの値100として解析されます。qt = 50とタスクパラメータqt = 100が同時に存在する場合)、タスク実行時にタスクパラメータが有効になります。${qt}は100として解析されます。これは優先順位による上書きの想定された動作ですが、複数人での共同作業時に混乱を招きやすいため、異なるスコープのパラメータには区別しやすい命名を採用することをお勧めします。${パラメータ名}は自動的に置換されません。この場合、2つの検証方法があります:${パラメータ名}の具体的な値を一時的に指定します。今回のデバッグにのみ有効であり、タスクパラメータの実際の設定には影響しません。パラメータタイプ | 用途 | 代表例 |
時間パラメータ | コード内でタスクの業務時間、スケジュール時間、実行時間を参照します。 | ${yyyyMMdd} 、$(yyyyMMdd) 、$[yyyyMMdd] |
コンテキストパラメータ | コード内で現在のプロジェクト/ワークフロー/タスクの識別情報を参照します。 | ${projectIdent} 、${taskName} |
構文クイックリファレンス(3種類の時間パラメータ):${yyyyMMdd} → インスタンスデータ時間(パーティション値として推奨)$(yyyyMMdd) → 計画スケジュール時間(海外タイムゾーンシーンでの使用を推奨)$[yyyyMMdd] → インスタンス実行時間(ログ/監査に適用)オフセットクイックリファレンス:${yyyyMMdd-1d} → 1日前${yyyyMMdd+3M} → 3か月後${yyyyMMdd+2w} → 2週間後${yyyyMMddHHmmss-2H} → 2時間前特殊オフセットクイックリファレンス:${yyyyMMdd+ME} → 当月月末${yyyyMMdd+MS} → 当月月初${yyyyMMdd+PME} → 前月月末${yyyyMMdd+YE} → 当年年末タイムゾーンクイックリファレンス:${UTC+0_yyyyMMdd} → UTC+0タイムゾーン${UTC+7_yyyyMMdd} → UTC+7タイムゾーンタイムゾーンプレフィックスを付けない場合 → デフォルトはUTC+8です。コンテキストパラメータ:${projectIdent} → プロジェクト識別子${workflowName} → ワークフロー名${taskName} → タスク名${taskId} → タスクID${taskInCharge} → タスク担当者${taskType} → タスクタイプ
パラメータタイプ | 構文 | 意味 | 補録/再実行のシナリオでは | 推奨シーン |
インスタンスデータ時間 | ${ } | 業務データの基準時間であり、タスク粒度で切り捨てられます。 | 常に変わりません。 | パーティション値、業務時間フィールド |
計画スケジュール時間 | $( ) | スケジュール設定で指定された起動時間 | 常に変わりません。 | 海外タイムゾーンシナリオ、完全なスケジュール時刻を保持する必要がある場合 |
インスタンス実行時間 | $[ ] | インスタンスが実際に実行を開始した時間 | 毎回異なります。 | ログ記録、監査追跡 |
${} / $() / $[] の3種類の括弧は混用できません。同じフォーマット文字列を異なる括弧に入れると、3つの完全に異なるパラメータとなり、解析結果が大きく異なる可能性があります。シナリオ | 実際の実行時間 | ${yyyyMMddHHmmss}<br>インスタンスデータ時間 | $(yyyyMMddHHmmss)<br>計画スケジュール時間 | $[yyyyMMddHHmmss]<br>インスタンス実行時間 |
2026-03-22 正常稼働 | 2026-03-22 02:00:15 | 20260322000000 | 20260322020000 | 20260322020015 |
2026-03-25 2026-03-20のインスタンスを補録 | 2026-03-25 10:30:22 | 20260320000000 | 20260320020000 | 20260325103022 |
2026-03-26 2026-03-22のインスタンスを再実行 | 2026-03-26 14:05:12 | 20260322000000 | 20260322020000 | 20260326140512 |
00:00:00になります。補録/再実行でも変わりません。02:00:00が保持されます。補録/再実行でも変わりません。${}${}でフォーマット文字列を囲みます。例:${yyyyMMddHHmmss}。タスク粒度 | 計画スケジュール時間(例) | インスタンスデータ時間 | 截断説明 |
分タスク | 2026-03-22 14:30:00 | 2026-03-22 14:30:00 | 分まで保持します。 |
時間タスク | 2026-03-22 14:30:00 | 2026-03-22 14:00:00 | 1時間単位に切り捨てます。 |
日次タスク | 2026-03-22 02:00:00 | 2026-03-22 00:00:00 | 日単位に切り捨てます。 |
週次タスク | 2026-03-22 02:00:00 | 2026-03-22 00:00:00 | 日単位に切り捨てます。 |
月次タスク | 2026-03-22 02:00:00 | 2026-03-22 00:00:00 | 日単位に切り捨てます。 |
年次タスク | 2026-03-22 02:00:00 | 2026-03-22 00:00:00 | 日単位に切り捨てます。 |
$()02:00:00です。$()でフォーマット文字列を囲みます。例:$(yyyyMMddHHmmss)。02:00:00)。一方、インスタンスデータ時間はタスク粒度に応じて切り捨てられます(日次タスクでは00:00:00に切り捨てられます)。分単位タスクの場合、両者は等しくなります。$[]$[]でフォーマット文字列を囲みます。例:$[yyyyMMddHHmmss]。${}/$()/$[]を置き換えるだけで済みます。以下では、インスタンスデータ時間${}を例として説明します。形式文字列 | 説明 | 例(データ時間は 2026-03-22 14:30:45) |
${yyyy} | 4桁の年 | 2026 |
${MM} | 2桁の月 | 03 |
${dd} | 2桁の日付 | 22 |
${HH} | 2桁の時間(24h) | 14 |
${mm} | 2桁の分 | 30 |
${ss} | 2桁の秒 | 45 |
${yyyyMMdd} | コンパクトな日付 | 20260322 |
${yyyy-MM-dd} | 書式化された日付を -で連結します。 | 2026-03-22 |
${HH:mm:ss} | 時間を書式化し、 :で連結します。 | 14:30:45 |
${yyyy-MM-dd HH:mm:ss} | 完全な日付と時刻 | 2026-03-22 14:30:45 |
${yyyyMMddHHmmss} | コンパクトで完全な時刻 | 20260322143045 |
${<フォーマット文字列><±N><単位>}です。オフセット方向 | 構文 | 例 |
N年後 | ${yyyyMMdd+Ny} | ${yyyyMMdd+2y} → 2年後 |
N年前 | ${yyyyMMdd-Ny} | ${yyyyMMdd-1y} → 1年前 |
Nか月後 | ${yyyyMMdd+NM} | ${yyyyMMdd+3M} → 3か月後 |
Nか月前 | ${yyyyMMdd-NM} | ${yyyyMMdd-1M} → 1か月前 |
N週間後 | ${yyyyMMdd+Nw} | ${yyyyMMdd+1w} → 1週間後 |
N週間前 | ${yyyyMMdd-Nw} | ${yyyyMMdd-2w} → 2週間前 |
N日後 | ${yyyyMMdd+Nd} | ${yyyyMMdd+7d} → 7日後 |
N日前 | ${yyyyMMdd-Nd} | ${yyyyMMdd-1d} → 1日前 |
N時間後 | ${yyyyMMddHHmmss+NH} | ${yyyyMMddHHmmss+6H} → 6時間後 |
N時間前 | ${yyyyMMddHHmmss-NH} | ${yyyyMMddHHmmss-2H} → 2時間前 |
N分後 | ${yyyyMMddHHmmss+Nm} | ${yyyyMMddHHmmss+30m} → 30分後 |
N分前 | ${yyyyMMddHHmmss-Nm} | ${yyyyMMddHHmmss-15m} → 15分前 |
タイムスタンプ(秒) | ${timestamp} | 10桁のUnixタイムスタンプで、 ±N<単位>演算をサポートします。 |
タイムスタンプ(ミリ秒) | ${timestamp_ms} | 13桁のUnixタイムスタンプで、 ±N<単位>演算をサポートします。 |
オフセット識別子 | 正式名称 | 説明 | 例(データ時間は 2026-03-22) |
+TE | TENDAY END | 当旬の旬末 | 20260331(3月下旬末) |
+ME | MONTH END | 当月月末 | 20260331 |
+QE | QUARTER END | 当四半期末 | 20260331(Q1末) |
+HYE | HALF YEAR END | 当半期末 | 20260630 |
+YE | YEAR END | 当年年末 | 20261231 |
+TS | TENDAY START | 当旬の旬初 | 20260321(3月下旬初) |
+MS | MONTH START | 当月月初 | 20260301 |
+HYS | HALFYEAR START | 当半期初 | 20260101 |
+YS | YEAR START | 当年年初 | 20260101 |
+PME | PRI MONTH END | 前月末 | 20260228 |
+PYE | PRI YEAR END | 前年末 | 20251231 |
${yyyyMMdd+ME}:インスタンスデータ時間に対応する当月月末$(yyyyMMdd+PME):計画スケジュール時間に対応する前月月末$[yyyyMMdd+YE]:インスタンス実行時間に対応する当年年末UTC+N_プレフィックスを追加します:${UTC+0_yyyyMMdd} → インスタンスデータ時間のUTC+0時間$(UTC+7_yyyyMMdd) → 計画スケジュール時間のUTC+7時間$[UTC+9_yyyyMMdd] → インスタンス実行時間のUTC+9時間${UTC+0_yyyyMMdd-1d}はUTC+0タイムゾーンにおける前日の日付を表します。パラメータ構文:インスタンスデータ時間:${[UTC+N_]<format>[±N<unit>][+<special>]}計画スケジュール時間:$([UTC+N_]<format>[±N<unit>][+<special>])インスタンス実行時間:$[[UTC+N_]<format>[±N<unit>][+<special>]]ここで:[UTC+N_] はオプションです。タイムゾーンプレフィックスで、Nは整数です。デフォルトはUTC+8です。<format> yyyy、MM、dd、HH、mm、ssおよびそれらの自由な組み合わせ(区切り文字をサポート)[±N<unit>] オプション、オフセット量<unit> y(年)、M(月)、w(週)、d(日)、H(時間)、m(分)[+<special>] オプション、特殊オフセット識別子TE, ME, QE, HYE, YE, TS, MS, HYS, YS, PME, PYE
シナリオ | 推奨パラメータ | 説明 |
パーティション値/業務時間フィールド | インスタンスデータ時間 ${} | 周期実行、補録、再実行のシナリオでは値が同じであり、データが常に正しいパーティションに書き込まれることを保証します。 |
海外/非UTC+8シナリオ | 計画スケジュール時間 $() + タイムゾーンプレフィックス | $(UTC+0_yyyyMMdd)のようにして、極端なクロスサイクルシナリオにおける時間エラーを回避します。 |
ログ/監査 | インスタンス実行時間 $[] | このデータがいつ生成されたかを記録します。 |
グローバルT+1モード | プロジェクトパラメータ + 時間パラメータの組み合わせ | プロジェクトパラメータで pt_date = ${yyyyMMdd-1d}を定義し、全プロジェクトのタスクで共用します。 |
-- 日次タスクは2026-03-22に実行され、dt='20260321'パーティションに書き込まれます。INSERT OVERWRITE TABLE dw.user_daily PARTITION(dt = '${yyyyMMdd-1d}')SELECT * FROM ods.user_logWHERE dt = '${yyyyMMdd-1d}';
-- 日次タスクは2026-03-22に実行されます。-- ${yyyy-MM-dd} は '2026-03-22' に解析されます。SELECT '${yyyy-MM-dd}' AS p_date, user_id, actionFROM ods.user_eventsWHERE dt = '${yyyyMMdd}';
-- 毎月1日にタスクを実行し、前月の月間データを集計します。-- ${yyyyMMdd+PME} → 前月末、${yyyyMMdd+MS} → 当月初SELECT COUNT(*) AS order_cntFROM dw.order_detailWHERE dt >= '${yyyyMMdd+PME}' AND dt < '${yyyyMMdd+MS}';
-- 海外ビジネスはUTC+0を基準とし、計画スケジュール時間+タイムゾーンプレフィックスを使用します。SELECT * FROM ods.global_eventsWHERE event_date = '$(UTC+0_yyyy-MM-dd)';
パラメータ | 意味 | サンプル値 |
${projectIdent} | プロジェクトID | my_project |
${workflowName} | ワークフロー名 | daily_etl |
${taskName} | タスク名 | user_sync_task |
${taskId} | タスクID | task-abc123 |
${taskInCharge} | タスク責任者(テスト実行時は現在の操作者、周期実行時はタスク責任者) | zhangsan |
${taskType} | タスクタイプ | SparkSQL |
SELECT'${projectIdent}' AS project_ident,'${workflowName}' AS workflow_name,'${taskName}' AS task_name,'${taskId}' AS task_id,'${taskInCharge}' AS task_in_charge,'${taskType}' AS task_type,user_idFROM wedata_demo_db.user_infoLIMIT 10;
--name + コンテキストパラメータを使用してYARN上のタスク名を指定します:--name ${projectIdent}-${workflowName}-${taskInCharge}
spark.app.nameパラメータを使用して指定します:spark.app.name=${projectIdent}-${workflowName}-${taskInCharge}
${}と計画スケジュール時間$():取得するのは補録の業務日付(つまり、指定した補録の日付)であり、実際に補録操作を実行した日付ではありません。$[]:取得するのは補録操作が実際に実行を開始した時間です。${yyyyMMdd} と $(yyyyMMdd) に日次タスクでの違いはありますか?${yyyyMMdd} → 20260322(データ時間、日単位で切り捨て)$(yyyyMMdd) → 20260322(スケジュール時間、日付部分は同じ)${yyyyMMddHHmmss} → 20260322000000(00:00:00に切り捨て)$(yyyyMMddHHmmss) → 20260322020000(スケジュール時刻02:00:00を保持)${} / $() / $[] の3種類の括弧は混用できません。${YYYY}は${yyyy}にすべきです(大文字と小文字は区別されます)。${の直後の右側、}の直前の左側にはスペースを入れることはできません。例えば、${ yyyyMMdd}、${yyyyMMdd }、${ yyyyMMdd }はいずれも無効であり、パラメータが認識されなくなります。${yyyyMMdd - 1d}、${yyyyMMdd -1d}は解析に失敗します。オフセット記号+/-とフォーマット文字列、数字、単位の間にはスペースを入れることはできません。必ず密着させて${yyyyMMdd-1d}のように記述してください。-- インスタンスデータの時刻は2026-05-07です。SELECT "${yyyy MM dd}";-- 実際の実行時に置換されます:SELECT "2026 05 07";
UTC+N_ タイムゾーンプレフィックスを付けない場合、デフォルトは何ですか?+ME と +PME の違いは何ですか?+ME(MONTH END):現在の月の月末日です。例えば、データ時刻が2026-03-15の場合、${yyyyMMdd+ME}は20260331になります。+PME(PRI MONTH END):前月の月末日です。例えば、データ時刻が2026-03-15の場合、${yyyyMMdd+PME}は20260228になります。${UTC+N_<フォーマット文字列><オフセット>}です。例:${UTC+0_yyyyMMdd-1d}:UTC+0タイムゾーンにおける前日の日付です。$(UTC+9_yyyyMMddHHmmss+6H):UTC+9タイムゾーンにおける6時間後です。${パラメータ名}プレースホルダを使用し、スケジューリングシステムが実行前にテキスト置換を行います。ただし、NotebookタスクはDLCエンジンでPythonセル方式で実行されるため、関数形式のdlcutils.widgets.get()を使用してパラメータを読み取ります。${パラメータ名}を直接埋め込み、スケジューリングシステムがSQLを送信する前にテキスト置換を完了します。INSERT OVERWRITE TABLE dw.user_daily PARTITION(dt = '${pt_date}')SELECT * FROM ods.user_logWHERE dt = '${pt_date}'AND user_id = ${qt};
${pt_date}:プロジェクトパラメータpt_dateを参照します(値は${yyyyMMdd-1d}で、最終的に20260506として解析されます)。${qt}:タスクパラメータqtを参照します(値は100です)。dt = '${pt_date}'で単一引用符を書き忘れると、SQLはdt = 20260506になり、構文エラーが発生します。数値型パラメータには引用符を付けません。例えば、user_id = ${qt}です。${パラメータ名}プレースホルダに対して純粋なテキスト置換を行います。置換はタスク送信前に発生します。Shellでは${パラメータ名}の構文はShellのネイティブ変数構文と一致しますが、実際にはWeDataスケジューリングのテキスト置換メカニズムが使用され、Shell環境変数メカニズムとは無関係です。#!/bin/bash# 時間パラメータを使用するecho "Processing data for date: ${yyyyMMdd}"hdfs dfs -ls /data/warehouse/dt=${yyyyMMdd-1d}/# プロジェクト/タスクパラメータを使用するecho "Business date: ${pt_date}"echo "Project: ${projectIdent}"
sourceまたは.などの方法でサブスクリプトを読み込む場合、サブスクリプト内の${パラメータ名}はWeDataによって置換されず、Shellによって通常の環境変数として解析されるだけです。${パラメータ名}の形式でコードテキスト内で直接置換され、SQLタスクと同様です。# スケジューリングシステムは実行前にパラメータを実際の値に置換しますpt_date = "${pt_date}"project = "${projectIdent}"print(f"Processing data for {project} on {pt_date}")# ロジックでパラメータを使用するthreshold = ${qt}if threshold > 50:print("High threshold mode")
pt_date = "${yyyyMMdd-1d}"df = spark.sql(f"SELECT * FROM ods.events WHERE dt = '{pt_date}'")df.write.mode("overwrite").saveAsTable("dw.events_daily")
"${pt_date}")。そうしないと、スケジューリングシステムによる置換後に裸の文字列20260506となり、Pythonの構文エラーが発生します。数値型パラメータ(例:${qt})は直接数値として使用できます。${name}によるテキスト置換は行わず、dlcutils関数ライブラリを通じてPython関数呼び出しの方式で読み取ります。dlcutils.widgets.get()dlcutils.widgets.get("パラメータ名")を使用して読み取ります:project_param = dlcutils.widgets.get("project_param") # プロジェクトパラメータworkflow_param = dlcutils.widgets.get("workflow_param") # ワークフローパラメータtask_param = dlcutils.widgets.get("task_param") # タスクパラメータ
${yyyyMMdd}、${projectIdent}などのシステムパラメータを直接参照することをサポートしていません。「タスクパラメータブリッジ」の方式を通じて行う必要があります:パラメータ名 | パラメータ値 |
pt_date | ${yyyyMMdd-1d} |
projectIdent | ${projectIdent} |
taskName | ${taskName} |
widgets.get()を使用してブリッジパラメータを読み取ります:pt_date = dlcutils.widgets.get("pt_date") # "20260506"project = dlcutils.widgets.get("projectIdent") # "my_project"task = dlcutils.widgets.get("taskName") # "user_sync_task"# パラメータを使用するdf = spark.sql(f"SELECT * FROM ods.user_log WHERE dt = '{pt_date}'")
widgets.text() を使用したデフォルト値の設定widgets.get()で値が読み取れないとエラーが発生します。事前にwidgets.text()を使用してパラメータとデフォルト値を定義する必要があります:# パラメータとデフォルト値を定義します(デバッグ時のみ有効)dlcutils.widgets.text("pt_date", "20260507", "業務日付")# パラメータを読み取るpt_date = dlcutils.widgets.get("pt_date")
widgets.text()で定義されたデフォルト値を上書きします。したがって、widgets.text()はデバッグ動作にのみ影響し、本番運用には影響しません。${パラメータ名}プレースホルダーを使用します。スケジューリングシステムがタスク開始前に置換を完了します。create_time >= '${yyyy-MM-dd-1d HH:mm:ss}'AND create_time < '${yyyy-MM-dd HH:mm:ss}'
.okファイルを生成します:/user/test/data_${yyyyMMdd}.ok
${filetrans_di_src}(ソースファイル名)と時間パラメータを組み合わせることができます:/user/test/${filetrans_di_src}_${yyyyMMdd}.ok
${yyyyMMdd-1d})、タイムゾーンプレフィックス(例:${UTC+0_yyyyMMdd})などが含まれます。各データソースがサポートするパラメータの使用位置については、対応するデータソースの個別ドキュメントを参照してください。${パラメータ名}を参照できます。スケジューリングシステムはノード実行前にパラメータを実際の値に置換し、Python構文に従って評価します。# 数値比較(タスクパラメータqt = 100)${qt} > 50# 文字列比較(文字列パラメータは引用符で囲む必要があります)'${pt_date}' == '20260507'# 組み合わせ条件${qt} > 50 and '${pt_date}' >= '20260501'
'${pt_date}')。そうしないと、置換後に裸のリテラル20260506となり、Python構文に適合せず解析に失敗します。${パラメータ名}を通じて参照できます。詳細な使用方法については、For-eachノードを参照してください。spark.app.name、--nameなどが含まれ、Sparkエンジン設定レベルのパラメータに属し、SparkSQL、PySpark、Sparkタスクで使用され、Yarnアプリケーション名、リソース割り当てなどの制御に用いられます。詳細については、各Sparkタスクノードのドキュメントを参照してください。dt = "20260507"、Shell変数$varなどが含まれ、コード言語自体の変数概念に属し、WeDataパラメータとは相互に影響しません。フィードバック