私はU-SQLで「複数行」の式を作成する方法に苦労しています。私は日付でデータを注文し、それぞれのために、現在の行の値と等しくない「ポート」の最初の値を探したいとします。同様の方法で、現在のポート値で日付値の最後の行を検索して、船舶がポートに何日間保管されているか調べます。ここには同じポート名の行がなければならないことに注意してください。間には新しい/他のポートはありません。U-SQL現在の行と異なる列の最初の値を選択する方法は?
私はこのように私のデータをロードしています:
@res = SELECT
Port,
Date
FROM @data;
これは私の日が構成されている方法です。
Port | Date |
Port A | 1/1/2017 |
Port A | 1/1/2017 |
Port A | 1/2/2017 |
Port B | 1/4/2017 |
Port B | 1/4/2017 |
Port B | 1/4/2017 |
Port B | 1/5/2017 |
Port B | 1/6/2017 |
Port C | 1/9/2017 |
Port C | 1/10/2017 |
Port C | 1/11/2017 |
Port A | 1/14/2017 |
Port A | 1/15/2017 |
私はデータを構造化することがしたい方法:
Port | Date | Time in Port | Previous Port
Port A | 1/1/2017 | 0 | N/A
Port A | 1/1/2017 | 0 | N/A
Port A | 1/2/2017 | 1 | N/A
Port B | 1/4/2017 | 0 | Port A
Port B | 1/4/2017 | 0 | Port A
Port B | 1/4/2017 | 0 | Port A
Port B | 1/5/2017 | 1 | Port A
Port B | 1/6/2017 | 2 | Port A
Port C | 1/9/2017 | 0 | Port B
Port C | 1/10/2017 | 1 | Port B
Port C | 1/11/2017 | 2 | Port B
Port A | 1/14/2017 | 0 | Port C
Port A | 1/15/2017 | 1 | Port C
私はU-SQLを初めて使用しているので、これにアプローチする方法について少し問題があります。 私の最初の本能は、LEAD()/ LAG()とROW_NUMBER()OVER(PARTITION BY xx ORDER BY日付)の組み合わせを使用することですが、私が探している正確な効果を得る方法は不明です。
誰かが正しい方向に向いていますか?
は、必要に応じて複製していますか? –