1

問題があり、ループしています。:| 誰かが私を助けてくれることを願っています..

だから私は入力ファイル(.xls)を持っています。これは単純ですが、次のような行(「ROW1」としましょう)があります:

  1. 行1 | 行 2 | 行3 | ROW_N
  2. 765 | 1 | AAAA-MM-DD | ...
  3. null | null | 1 | AAAA-MM-DD | ...
  4. null | null | 1 | AAAA-MM-DD | ...
  5. 944 | 2 | AAAA-MM-DD | ...
  6. null | null | 2 | AAAA-MM-DD | ...
  7. 088 | 7 | AAAA-MM-DD | ...
  8. 555 | 2 | AAAA-MM-DD | ...
  9. null | null | 2 | AAAA-MM-DD | ...

ご覧のとおり、ここには標準はありません..いくつかの行がヌル (ROW1) で、ROW2 には同じ番号があり、ROW1 とは異なる関連付けがあります (5 行目と 6 行目、次に 8 行目と 9 行目など)。

私の目的は、値を ROW1 からコピーして貼り付けることです。基本的には、null の場合、前のステップからコピーすることです...

次のようなものを使用して、「式」ステップを使用しようとしています。

=IF(AND(ISBLANK([ROW1]);NOT(ISBLANK([ROW2]));ROW_n=ROW1;IF(AND(NOT(ISBLANK([ROW1]));NOT(ISBLANK([ROW2])); ROW_n=ROW1;ROW_n=""));

でもまだ何も..

「分析クエリ」を試しましたが、何もしません..

私はxlsファイル入力をストリーミングするだけを使用しています..

どうもありがとう、どんな助けでも大歓迎です!!

よろしくお願いします!

4

2 に答える 2

1

以下のコードで「ユーザー定義のJavaクラス」を追加して、解決策を見つけました。

import java.util.HashMap; private FieldHelper output_field, card_field; private RowSet out, log; private String previou_card =null;

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {

if (first)
{
    first = false;
    out = findTargetRowSet("out");

    output_field = get(Fields.Out, "previous_card");
} else {
    Object[] r = getRow();
    if (r == null) {
        setOutputDone();
        return false;
    }

    r = createOutputRow(r, data.outputRowMeta.size());
    if (previous_card != null) {
        output_field.setValue(r, previous_card);
    }

    if (card_field == null) {
        card_field = get(Fields.In, "Grupo de Cartões");
    }

    String card = card_field.getString(r);
    if (card != null && !card.isEmpty()) {
        previous_card = card;
    }
    // Send the row on to the next step.
    putRowTo(data.outputRowMeta, r, out);
}
return true;

この後、いくつかの手順を実行する必要がありますが、これは非常に役立ちます。

ありがとうございます!

于 2015-05-14T16:01:26.327 に答える
-2

最後に私は結果を得ました。以下の手順に従ってください

  1. 下の画像は完全な変身画面です。 ここに画像の説明を入力

  2. データ グリッド データはこのようになります。申し訳ありませんが、私の地元では Microsoft を持っていないため、Data Grid を使用しました。Data Grid の代わりに、Microsoft Excel 入力ステップをドラッグ アンド ドロップできます。

ここに画像の説明を入力

  1. 1 つの Java スクリプト ステップをドラッグ アンド ドロップし、以下のコードを記述します。

ここに画像の説明を入力

  1. 変換の最後のステップで、[値の選択] ステップをドラッグ アンド ドロップし、列を選択します (これらのステップは必要ありません)。

ここに画像の説明を入力

  1. 最終結果はこのようになります。

ここに画像の説明を入力

お役に立てれば。

于 2015-05-14T03:51:36.640 に答える