1

各地区が地域内にある地区レベルのデータのXLSファイルがあります。ただし、地域の列は、地域の最初の地区についてのみ入力されます。何かのようなもの:

District  Region Population
Foo       Bar    1234
          Baz    345
          Qux    69
Quux      Zob    1234
          Bax    42

等々。空のDistrictフィールドに正しいDistrict値が入力されるように処理するにはどうすればよいですか(最終的にCSVに出力するためですが、そのビットを実行できます)。

District  Region Population
Foo       Bar    1234
Foo       Baz    345
Foo       Qux    69
Quux      Zob    1234
Quux      Bax    42

実際にこれをGeoKettle2.0で行っていますが、最終的にはすべてシェープファイルで実行されます。

4

1 に答える 1

0

@Brianが言ったように、そのような変換のための一般的なステップは一度もないと思います.PDIステップのほとんどは真に表形式のデータで機能します. ただし、そのような場合は、単純な Modified Java Script ステップで解決できます。

ここで行うことは、最後の空でないDistrictものを変数として格納し、lastDistictそれを空の行で使用するスクリプトを作成することです。

最初に変更された Java Script を挿入し、それを既存のストリームに接続します。ステップを開き、スクリプトのタイトル (タブ) を右クリックし、[新規追加] を選択します。この新しいスクリプトでは、以下を挿入するだけです:

var lastDistrict;

このスクリプトのタイトルを右クリックし、「開始スクリプトの設定」を選択します。これを行うと、ステップが最初に使用されたときにのみ var の作成を実行するように Kettle に指示されます。そうしないと、lastDistrict新しい行ごとに の値が失われます。

同じステップ (通常は) の他のスクリプトで、次をScript 1挿入します。

if ((District == null) || (trim(Distict) == "")) {
    newDistrict = lastDistrict;
} else {
    newDistrict = District;
    lastDistrict = District;
}

ステップの下部に、 というグリッドが表示されFieldsます。という名前の新しいフィールドを作成し、そのnewDistrictタイプを String に設定します。

newDistrictこれで、すべての行に値を持つ新しいフィールドができました。新しい列を作成したくない場合は、 を入力Rename toDisctrictて に設定Replace value 'Fieldname' or 'Rename to'Yます。

于 2013-07-05T13:07:10.793 に答える