2017-02-03 6 views
1

私は2つの列:IDの日付を持っているとします。私は3番目の列を追加したい最も早い日付。この列には、その行のIDと一致するすべてのデータにわたって、最も早くまたは最小のの日付が検索されます。それは以下を生成するでしょう - ID 501を参照してください。私は多くのデータを持っているので、パワークエリーを使用する必要があります。どのように式を書くのですか?パワークエリー:条件が満たされた場合のルックアップの最小日

ID Date Earliest Date 
501 01/01/2017 01/08/2015 
203 08/06/2015 08/06/2015 
304 01/04/2014 01/04/2014 
501 01/01/2016 01/08/2015 
201 01/02/2015 01/02/2015 
501 01/08/2015 01/08/2015 

答えて

0

あなたはID列の順序を気にしない場合は、 「すべての行」集計を持つIDでグループ化し、「日付」列に最小日付の集計を行うこともできます。あなたは元のテーブルが含まれている行と呼ばれる別の列を取得します

Group by builder

:ビルダーは、下の画像のようになります。この列を展開して[日付]列を表示すると、必要なテーブルが表示されます。各行について

Expand the rows column

+0

行われていなかった2時間後にデータの200万行、とそれは元のテーブルに対して。あなたが各日付の最も早い行だけを望むなら、これは最高です。 –

+0

ありがとう、これはトリックでした! –

1

溶液は、最も早い日付を計算するために最小集約を使用して、自身と元のデータを結合することです。 >コンバインクエリ(別名「参加」)>(Query1をを修正避けるために)新しいとしてクエリをマージマージ:

ID,Date 
501,01/01/2017 
203,08/06/2015 
304,01/04/2014 
501,01/01/2016 
201,01/02/2015 
501,01/08/2015 

はデータと参加:クエリでこの開始データから


Query1と呼ばれます

Query1 ID列毎時間を選択し、デフォルト左外側のままには親切に参加: Join

次に、Transform> Structured Column> Aggregateを選択し、「Count of Date」を選択します(UIが最小集計を提案した方が良いでしょうが、コードに直接触れることで修正できます)。

次に、数式バー(表示>レイアウト>数式バー)をオンにして、List.CountList.Minに置き換える数式を編集します。新しい列の名前を変更すると、完了です!


私の完全な "M" の式:

Query1を:

let 
    Source = Table.PromoteHeaders(Csv.Document("ID,Date 
501,01/01/2017 
203,08/06/2015 
304,01/04/2014 
501,01/01/2016 
201,01/02/2015 
501,01/08/2015")) 
in 
    Source 

Merge1:

let 
    Source = Table.NestedJoin(Query1,{"ID"},Query1,{"ID"},"NewColumn",JoinKind.LeftOuter), 
    #"Aggregated NewColumn" = Table.AggregateTableColumn(Source, "NewColumn", {{"Date", List.Min, "Earliest Date"}}) 
in 
    #"Aggregated NewColumn" 
+1

おかげで、残念ながら私はこれを試してみましたが、これはまだあなたは、元の各行を保持したい場合は、あなたが参加する必要があります:( –

0

もしthisrow [ID]でソーステーブルをフィルタリングし、次いで得られたテーブルの[日]カラムから最小値を選択することによって、最も早い日付を得ます。

let 
    Source = #table(type table[ID=Int64.Type, Date=date], { 
    {501,"01/01/2017"}, 
    {203,"08/06/2015"}, 
    {304,"01/04/2014"}, 
    {501,"01/01/2016"}, 
    {201,"01/02/2015"}, 
    {501,"01/08/2015"} 
    }), 
    Convert = Table.TransformColumnTypes(Source,{{"Date", type date}}), 

    AddMinDateColumn = Table.AddColumn(Convert, "Earliest Date", (thisrow) => List.Min(Table.SelectRows(Convert, each [ID] = thisrow[ID])[Date]), type date) 
in 
    AddMinDateColumn 
関連する問題