1

次のようなSQLクエリを繰り返し実行したい:

SELECT '${date.i}' AS d, 
  COUNT(DISTINCT xid) AS n
FROM table 
WHERE date 
  BETWEEN DATE_SUB('${date.i}', INTERVAL 6 DAY) 
    AND '${date.i}'
;

これは基本的に、タイムスパンによるグループ化ですが、それらが交差しているため、GROUP BY を使用できません。

そのため、特定の期間に毎日クエリを繰り返し実行したいと考えています。しかし、ループをどのように実装すればよいかわかりません。どのような解決策を提案しますか?

Kettle 変数 date.i は、グローバル変数から初期化されます。変換は、同じ変換バンドル内のいくつかの変換の 1 つにすぎません。「stop trafo」は、ループに再入しないことによって暗黙のうちに実装される可能性があります。

フローチャートは次のとおりです。

ここに画像の説明を入力

4

2 に答える 2

1

Kettle では、ループを回避したいので、変換で実際の問題が発生する可能性があります。代わりに、必要な各日付のストリームに行を (フィールドに格納された値で) 配置するステップを追加し、そのフィールド値をクエリで使用することで、これを行う必要があります。

ETA:ストリームは、ステップ間で行 (レコード) を移動するものです。ステップ間の行を一時的に保持する各ホップのテーブルで構成されていると考えると役立つ場合があります。

Kettle 変換は行レベルでのみシーケンシャルであるため、ループを回避したいと考えています。このため、トランスフォーム内のループは、直感的に期待するようには機能しません。

参考までに、ストリームが何であるかまだ不明な場合は、Kettle のチュートリアルをいくつか実行する必要があるようにも思えます。

于 2013-04-08T14:45:23.973 に答える