2016-11-08 5 views
2

それが可能かどうかは確かではありません。Excel/DAX/Power Query:2つの日付から24時間枠内に記入されたレコードを検索するためにテーブルをフィルタリングする方法

私は2つの日付列を持っている:「Date_of_Call」と「Error_Open_Time」

私はError_Open_TimeがDate_of_Call時間から24時間の枠内にある唯一のショーレコードにこのレポートをフィルタリングします。

例:

Error_Open_Time = '11/2016分の6 1時17分00秒PM 'とDate_of_Call = '11/2016分の6午前12:00:00' の場合は、このレコードはに表示するかどうかError_Open_Timeが24時間枠内にあるので、フィルタ

Error_Open_Time = '12/11/2016 12:35:00 AM 'とDate_of_Call = '12/10/2016 12:00:00 AM'の場合、このレコードはError_Open_TimeがDOES以降にフィルタに表示されてはならない[SHOULD NOT] 24時間枠内には入らない。

また、Error_Open_Timeの日付がDate_of_Callの日付より前の場合は、不要であるためフィルタリングする必要があります。

これは意味があると思います。あなたのすべての協力に感謝します!

+0

Date_of _Call列には時刻情報が含まれていますか? –

答えて

1

パワークエリーで日付を差し引くことができます。これにより、継続時間が与えられます。 Error_Open_TimeDate_of_Call列がDateまたはDateTime型である場合、これはトリックを行う必要があります。

  1. [Error_Open_Time] - [Date_of_Call]
  2. でカスタム列を追加し、24時間の間になるようにカスタム列をフィルタリングします。 「-1.00:00:00」以上で「1.00:00:00」以下(1日以内)であることができます。

の手順は次のようになります。カスタム列を削除します。

#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each [Error_Open_Time] - [Date_of_Call]), #"Filtered Rows" = Table.SelectRows(#"Added Custom", each [Custom] >= #duration(-1, 0, 0, 0) and [Custom] <= #duration(1, 0, 0, 0)), #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Custom"})

+0

チャームのように働いた!どうもありがとうございました!! –

0

フィルタリングするレコードを決定するために、あなたのテーブルで計算列を作成します。

= 
IF (
    'Table'[Date_of_Call] 
     = DATE (YEAR ('Table'[Error_Open_Time]), MONTH ('Table'[Error_Open_Time]), DAY ('Table'[Error_Open_Time])), 
    1, 
    0 
) 

レポートでは、計算された列の値が1に等しいフィルタを追加します。

これが役立つかどうか教えてください。 PowerQueryについては

+0

この方法はうまくいくとは思っていませんでしたが、驚いたことにそれはそうでした!アレハンドロの方法と同じ結果が得られました。 Date_of_Call列の日付はすべて、タイムスタンプとして12:00:00 AMを使用しているため、これはうまくいったと思います。タイムスタンプが異なっていたら、私はこのメソッドが動作するとは思わない。 –

+0

@NickMomin、そういうわけで、Date_of_Callに時刻情報が含まれているかどうかを私はあなたに尋ねました。あなたが12:00:00を使ったと思ったら、それはないと思った。 –

+0

ああ、それは理にかなっている。なぜなら、似たような状況の誰かが解決策を探しているのであれば、それがうまくいかない理由/時を含めると思っただけです。ありがとう:) –

0

、私は1行でそれを行うだろう、列を追加する必要はありません。

FilterRecords = Table.SelectRows(Source, each ([Error_Open_Time] > [Date_of_Call]) and ([Date_of_Call] + #duration(1,0,0,0) >= [Error_Open_Time])) 

また、この変形が可能である:

FilterRecords = Table.SelectRows(Source, each ([Error_Open_Time] > [Date_of_Call]) and (Date.AddDays([Date_of_Call], 1) >= [Error_Open_Time])) 

あなたはSQLが必要な場合は、 use

SELECT [Date_of_Call], [Error_Open_Time] 
FROM Table 
WHERE [Error_Open_Time] > [Date_of_Call] 
     AND 
     (DateAdd(day, 1, [Date_of_Call]) >= [Error_Open_Time]) 
関連する問題