2017-04-21 11 views
1

私はAmazon Athenaを使用して、過去1週間に起こったすべてのコンソールログインを取得しています。今は、データに関係なくすべてのコンソールログインを取得できます。私は、このクエリが先週に起こったすべてのawsコンソールログインを常にピックアップするように、以下のクエリを変更する必要があります。過去1週間のアテーナからの結果を得るには?

WITH events AS (
    SELECT 
    event.eventVersion, 
    event.eventID, 
    event.eventTime, 
    event.eventName, 
    event.eventType, 
    event.eventSource, 
    event.awsRegion, 
    event.sourceIPAddress, 
    event.userAgent, 
    event.userIdentity.type AS userType, 
    event.userIdentity.arn AS userArn, 
    event.userIdentity.principalId as userPrincipalId, 
    event.userIdentity.accountId as userAccountId, 
    event.userIdentity.userName as userName 
    FROM cloudtrail.events 
    CROSS JOIN UNNEST (Records) AS r (event) 
) 
SELECT userName,sourceIPAddress,eventName,eventTime FROM events WHERE eventName='ConsoleLogin'; 

イベント時刻」は次のようになります。 enter image description here

Tを

+0

申し訳ありませんがご質問は不明です。あなたは単にクエリの日付範囲を指定する機能を求めていますか? –

+0

@JohnRotensteinはい、私は現在の日付から過去7日間のコンソールログインのみを取得する動的クエリを追加したいとします – Kittystone

答えて

3

その列をテキストとしてを通じて来ている場合は、タイムスタンプに変換することができ、私はアマゾンアテナに'2016-05-03 05:46:00'を変換できることがわかりました。タイムスタンプなので、replace()関数を使用して適切な形式にしてください:

select cast(replace(replace('2016-05-03T05:46:00Z', 'Z'), 'T', ' ') as timestamp) 

したがって、あなたのWITHセクションで、とevent.eventTypeを置き換える:あなたは、その後のような、日付に対して標準WHEREステートメントを使用することができます

cast(replace(replace(event.eventType, 'Z'), 'T', ' ') as timestamp) AS eventType, 

WHERE eventType > '2017-04-01' 

それとも過去1週間の(Presto documentationに基づきます):

WHERE eventType > current_date - interval '7' day 
+0

だから私は過去の週を取得したいですか? – Kittystone

+0

先週の例を追加しました。 –

+0

それは言う:INVALID_CAST_ARGUMENT:値はタイムスタンプにキャストできません:AwsApiCall – Kittystone

関連する問題