finished s3explorer rewrite
This commit is contained in:
parent
4791b139b8
commit
bd4ad2b16e
|
@ -27,20 +27,17 @@ public static class Program
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Parsing Arguments
|
// Parsing Arguments
|
||||||
var bucketName = args[0] + BucketSalt;
|
var bucketName = args[0] + BucketSalt;
|
||||||
var now = UnixTime.Now;
|
var now = UnixTime.Now;
|
||||||
|
|
||||||
var startTime = Int64.Parse(args.ElementAtOr(1, (now - UnixTimeSpan.FromSeconds(20)).ToString()));
|
var startTime = Int64.Parse(args.ElementAtOr(1, (now - UnixTimeSpan.FromSeconds(20)).ToString()));
|
||||||
var endTime = Int64.Parse(args.ElementAtOr(2, now.ToString()));
|
var endTime = Int64.Parse(args.ElementAtOr(2, now.ToString()));
|
||||||
var nDataPoints = Int64.Parse(args.ElementAtOr(3, "10")) ;
|
var nDataPoints = Int64.Parse(args.ElementAtOr(3, "11")) - 1 ;
|
||||||
|
|
||||||
var timestampList = GetDataTimestamps(startTime, endTime, nDataPoints);
|
var timestampList = GetDataTimestamps(startTime, endTime, nDataPoints);
|
||||||
|
|
||||||
await PrintFiles(bucketName, timestampList, endTime);
|
await PrintFiles(bucketName, timestampList);
|
||||||
|
|
||||||
// Success
|
// Success
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -48,73 +45,29 @@ public static class Program
|
||||||
|
|
||||||
private static IEnumerable<Int64> GetDataTimestamps(Int64 startTime, Int64 endTime, Int64 nDataPoints)
|
private static IEnumerable<Int64> GetDataTimestamps(Int64 startTime, Int64 endTime, Int64 nDataPoints)
|
||||||
{
|
{
|
||||||
// Calculating temporal distance of data files from the number of requested points.
|
// Calculating temporal distance of data files from the number of requested points. (rounding for int division)
|
||||||
var timeSpan = endTime - startTime;
|
var timeSpan = endTime - startTime;
|
||||||
var timeBetweenDataPoints1 = timeSpan / nDataPoints;
|
var timeBetweenDataPoints1 = (timeSpan + nDataPoints -1) / nDataPoints;
|
||||||
|
|
||||||
// We only upload data every second second so sampling more is impossible.
|
// We only upload data every second second so sampling more is impossible.
|
||||||
// If this ever changes we might have to change this as well.
|
// If this ever changes we might have to change this as well.
|
||||||
var timeBetweenDataPoints = Math.Max(timeBetweenDataPoints1, 2);
|
var timeBetweenDataPoints = Math.Max(timeBetweenDataPoints1, 2);
|
||||||
|
|
||||||
// Building a List of the timestamps we want to grab the files for.
|
// Building a List of the timestamps we want to grab the files for.
|
||||||
|
|
||||||
for (var i = startTime; i <= endTime; i += timeBetweenDataPoints)
|
for (var i = startTime; i <= endTime; i += timeBetweenDataPoints)
|
||||||
{
|
{
|
||||||
//Rounding to even numbers only (we only save every second second)
|
//Rounding to even numbers only (we only save every second second)
|
||||||
yield return i / 2 * 2;
|
yield return i%2 != 0 ? i+1 : i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// private static async Task PrintFiles(String bucketName, IEnumerable<Int64> timestampList, Int64 endTime)
|
|
||||||
// {
|
|
||||||
// // var csvFileText = await GetFileText(bucketName, endTime);
|
|
||||||
// //
|
|
||||||
// // // Building Header-Row from the newest data
|
|
||||||
// // csvFileText.Select(l => l.Split(";"))
|
|
||||||
// // .Select(l => l[0])
|
|
||||||
// // .Prepend("Timestamp")
|
|
||||||
// // .JoinWith(";")
|
|
||||||
// // .WriteLine();
|
|
||||||
//
|
|
||||||
// foreach (var timestamp in timestampList)
|
|
||||||
// {
|
|
||||||
// var csvFileText = await GetFileText(bucketName, timestamp);
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// // Writing Data below data-keys in a timestamped row
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// var dataPoints = csvFileText.Select(l => l.Split(";")[1]);
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// dataPoints
|
|
||||||
// .Prepend(timestamp.ToString())
|
|
||||||
// .JoinWith(";")
|
|
||||||
// .WriteLine();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
private static async Task PrintFiles(String bucketName, IEnumerable<Int64> timestampList)
|
||||||
private static async Task PrintFiles(String bucketName, IEnumerable<Int64> timestampList, Int64 endTime)
|
|
||||||
{
|
{
|
||||||
// var csvFileText = await GetFileText(bucketName, endTime);
|
|
||||||
//
|
|
||||||
// // Building Header-Row from the newest data
|
|
||||||
// csvFileText.Select(l => l.Split(";"))
|
|
||||||
// .Select(l => l[0])
|
|
||||||
// .Prepend("Timestamp")
|
|
||||||
// .JoinWith(";")
|
|
||||||
// .WriteLine();
|
|
||||||
|
|
||||||
|
|
||||||
var columns = new Dictionary<String, List<String?>>
|
var columns = new Dictionary<String, List<String?>>
|
||||||
{
|
{
|
||||||
["timestamp"] = new List<String?>()
|
["timestamp"] = new()
|
||||||
};
|
};
|
||||||
|
|
||||||
var index = 0;
|
var index = 0;
|
||||||
|
|
||||||
foreach (var timestamp in timestampList)
|
foreach (var timestamp in timestampList)
|
||||||
|
@ -138,12 +91,11 @@ public static class Program
|
||||||
columns[key].Add(dict[key]);
|
columns[key].Add(dict[key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var key in columns.Keys.Where(key => !dict.ContainsKey(key)))
|
// if a key in columns is not present in this record (dict) (except the timestamp) we need to set it to null
|
||||||
|
foreach (var key in columns.Keys.Where(key => !dict.ContainsKey(key) && key != "timestamp"))
|
||||||
{
|
{
|
||||||
// if a key in columns is not present in this record (dict) we need to set it to null
|
|
||||||
columns[key].Add(null);
|
columns[key].Add(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue