みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FMP12 win7を使用しています。
勝手で大変申し訳無いのですが少し急いでいます。
3年分(100万件)のアクセスログデータをそれぞれの日にちの時間台ごとに最小と最大を抽出しなければならず、
無知なため、困っています。何卒ご教授の程よろしくお願いします。
下記テーブルがあります。
日付フィールド │時刻フィールド │日時フィールド(リレーション用?)
2017/7/1 12:15 2017/7/1 12:15 ←12時台の最小値
2017/7/1 12:40 2017/7/1 12:40
2017/7/1 12:42 2017/7/1 12:42
2017/7/1 12:59 2017/7/1 12:59 ←12時台の最大値
2017/7/1 13:20 2017/7/1 13:20
・ ・
・ ・
・ ・
これを別テーブルに以下のような形式で1時間毎の最小時間と最大時間を抽出したいです。
日時フィールド │最小値 │最大値
2017/7/1 10:00
2017/7/1 11:00
2017/7/1 12:00 12:15 12:59
2017/7/1 13:00
2017/7/1 14:00
・ ・ ・
・ ・ ・
・ ・ ・
よろしくお願いいたします。
Offline
別テーブルで日時 + 1時間のフィールドをつくります。
日時とこのフィールドとの範囲のリレーションをし、
その関連レコードの時刻のMinとMaxでいいですね。
Offline
すいません。うまくできないです。
範囲リレーションの><はどのようにすればよろしいでしょうか?
無知でご迷惑をおかけしますが、何卒よろしくお願いいたします。
Offline
別テーブルと、元テーブルのリレーション
別テーブル 元テーブル
日時 <= 日時
and
日時 + 1時間 > 日時
これでいいでしょう。
Offline
ポチさんありがとうございます。
別テーブルと、元テーブルのリレーション
別テーブル 元テーブル
日時 <= 日時
↑別テープルの日時は日付と1時間毎の時間をタイムスタンプで表示しています。例)2017/7/1 12:00
and
日時 + 1時間 > 日時
↑ここの日時+1時間はどうすればよろしいですか?
よろしくお願いたします。
Offline
日時 + 60 * 60
1時間の秒数を加えればいいんですよ
Offline
ポチさんありがとうございます。
日時 + 60 * 60
の日時は日付+時間に更に60*60ですか?
すみません。
Offline
脇から失礼します、
範囲指定のリレーションは多量マス処理には不利なので、
データテーブルの方で、分以下切り捨ての「マルメ日時」計算フィールドを作り、
標準(完全一致)のリレーションで処理するのが吉かと思います。
Offline
HIROさんありがとうございます。
秒を削除して、インポートし直しましたが、リレーションはどう組めばよろしいでしょうか?
よろしくお願いいたします。
Offline
時フィールドを作って、集計でもいいかも。ソートも内部処理を含めて1回きりですみます
https://www.dropbox.com/s/o9f14w2dkj5j8 … 7.zip?dl=0
Offline
処理速度を最優先に考えた作例サンプルをアップしました。
マスタテーブル内の集計処理だけで自己内完結する1テーブルシステムとしています。
●サンプル「時間内最大・最小時刻.fmp12」 → https://yahoo.jp/box/d4qdP6
Offline
> 日時は日付+時間に更に60*60ですか
日時は、
Timestamp ( 日付 ; 時刻 )
で求められます。
これに
60 * 60
を加えれば1時間後になります。
私も最初、Hiroさんの#8の様に考えたんですが、
100万レコードも有るテーブルにフィールドを追加するのも、、
と思って、
範囲のリレーションを提案したのですが、
> 日時フィールド(リレーション用?)
既にこのフィールドがあるのですから、
このフィールドを変更して、
○○時00分00秒の時刻にすればいいんですね。
お二方のサンプルは見ていませんが、この方法がお勧めです。
Offline
Pages: 1
[ Generated in 0.013 seconds, 10 queries executed - Memory usage: 569.21 KiB (Peak: 586.12 KiB) ]