gpt4 book ai didi

c# - 如何将 json 数据合并到数组中,但在几分钟内聚合数据?

转载 作者:行者123 更新时间:2023-12-03 01:32:50 25 4
gpt4 key购买 nike

我正在编写一个 Azure 函数,其中我从 Azure StreamAnalytics 接收数据并将其发送到关系数据库。经过几个月的测试这个功能后,数据库的增长是疯狂的。我每天写入 300.000 行数据,而这仅来自 1 个数据源。现在我想聚合每分钟收到的数据并获取该分钟的平均值。在研究如何聚合 json 数据后,我找不到可以帮助我的文章。

我创建了一个自定义 Machine 类,其中有几个函数,以便我可以存储数据。我已经可以存储毫秒数据,现在我想存储分钟数据。

[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequestMessage req,
ILogger log)
{
NpgsqlConnectionStringBuilder builder = new NpgsqlConnectionStringBuilder
{
Host = "test",
Username = "test",
Password = "test",
Database = "test",
};

using (NpgsqlConnection connection = new NpgsqlConnection(builder.ConnectionString))
{
connection.Open();
if (connection != null && connection.State == ConnectionState.Open)
{
string content = await req.Content.ReadAsStringAsync();
dynamic result = JsonConvert.DeserializeObject(content);

foreach (var data in result)
{
Machine machine = new Machine
{
Id = data.data.sID,
Path = data.data.sXPath,
Type = data.data.sType,
MeasurementTimestamp = data.data.dtTimeStamp,
};

foreach (JProperty items in data.data.items)
{
string[] split = Regex.Split(items.Name, @"(?<!^)(?=[A-Z])");
string dataType = machine.GetDataType(split[0]);
string measurementValue = (string)items.Value;

if (!machine.MeasurementTypeExists(items.Name, dataType, connection))
{
machine.AddMeasurementType(items.Name, dataType, connection);
}

int typeId = machine.GetTypeID(machine.Type, connection);

if(machine.MachineExists(machine.Id, connection) && machine.MeasurementTypeExists(items.Name, dataType, connection) && machine.PointOfMeasurementExists(machine.Id, typeId, machine.Path, connection))
{
int measurementTypeId = machine.GetMeasurementTypeID(items.Name, dataType, connection);
int pointOfMeasurementId = machine.GetPointOfMeasurementID(machine.Path, machine.Id, typeId, connection);

// Miliseconds
machine.AddMeasurementMs(measurementValue, machine.MeasurementTimestamp, machine.Id, measurementTypeId, pointOfMeasurementId, connection);


// Minutes
machine.AddMeasurementMin(measurementValue, machine.MeasurementTimestamp, machine.Id, measurementTypeId, pointOfMeasurementId, connection);
}
}
}
}
}
return req.CreateResponse(HttpStatusCode.OK, "Executed");
}
}

如何使用 AddMeasurementMin 函数聚合 json 数据来存储一分钟的平均值?任何朝着正确方向的插入都会对我有所帮助。

最佳答案

我会将日期和分钟存储在数据库中的两个单独字段中,然后您可以使用查询来聚合每分钟的条目并计算条目数。

从您的代码中,您需要使用时间戳来获取分钟,因此可以快速执行类似的操作

var entryDate = new DateTime(1970, 1, 1, 0, 0, 0).AddSeconds(machine.MeasurementTimestamp);

// Minutes
machine.AddMeasurementMin(measurementValue, entryDate.Minute, machine.Id, measurementTypeId, pointOfMeasurementId, connection);

关于c# - 如何将 json 数据合并到数组中,但在几分钟内聚合数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60706207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com