Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jobily
IoTSharp
提交
02d87f7c
I
IoTSharp
项目概览
jobily
/
IoTSharp
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
IoTSharp
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
02d87f7c
编写于
11月 02, 2020
作者:
麦壳饼
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
实现了查询历史 和 查询 最新数据
上级
0fd652d7
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
58 addition
and
44 deletion
+58
-44
IoTSharp/Storage/InfluxDBStorage.cs
IoTSharp/Storage/InfluxDBStorage.cs
+57
-32
IoTSharp/Storage/InfluxDBV1Storage.cs
IoTSharp/Storage/InfluxDBV1Storage.cs
+1
-12
未找到文件。
IoTSharp/Storage/InfluxDBStorage.cs
浏览文件 @
02d87f7c
using
hyjiacan.py4n
;
using
InfluxDB.Client
;
using
InfluxDB.Client.Api.Domain
;
using
InfluxDB.Client.Core.Flux.Domain
;
using
InfluxDB.Client.Writes
;
using
IoTSharp.Data
;
using
IoTSharp.Dtos
;
...
...
@@ -41,38 +42,33 @@ namespace IoTSharp.Storage
{
InfluxDBClient
_taos
=
_taospool
.
Get
();
var
query
=
_taos
.
GetQueryApi
();
var
v
=
query
.
QueryAsync
(
@
$"
var
v
=
query
.
QueryAsync
(
@
$"
from
(
bucket
:
""
iotsharp
-
bucket
""
)
|>
range
(
start
:
-
10
h
)
|>
range
(
start
:
-
72
h
)
|>
filter
(
fn
:
(
r
)
=>
r
[
""
_measurement
""
]
==
""
TelemetryData
""
)
|>
filter
(
fn
:
(
r
)
=>
r
[
""
DeviceId
""
]
==
""
{
deviceId
}
""
)
|>
last
()
").GetAwaiter().GetResult();
List
<
TelemetryDataDto
>
dt
=
new
List
<
TelemetryDataDto
>
();
v
.
ForEach
(
ft
=>
{
ft
.
Records
.
ForEach
(
fr
=>
{
dt
.
Add
(
new
TelemetryDataDto
()
{
KeyName
=
fr
.
GetField
(),
DateTime
=
fr
.
GetTimeInDateTime
().
GetValueOrDefault
(),
Value
=
fr
.
GetValue
()
});
});
});
|>
last
()
");
_taospool
.
Return
(
_taos
);
return
Task
.
FromResult
(
dt
);
return
FluxToDtoAsync
(
v
);
}
public
Task
<
List
<
TelemetryDataDto
>>
GetTelemetryLatest
(
Guid
deviceId
,
string
keys
)
{
InfluxDBClient
_taos
=
_taospool
.
Get
();
IEnumerable
<
string
>
kvs
=
from
k
in
keys
select
$" keyname = '
{
k
}
' "
;
string
sql
=
$"select last_row(*) from telemetrydata where deviceid='
{
deviceId
:
N
}
' and (
{
string
.
Join
(
"or"
,
kvs
)
}
) group by deviceid,keyname"
;
List
<
TelemetryDataDto
>
dt
=
null
;
// SqlToTDD(_taos, sql, "last_row(", ")", string.Empty);
var
query
=
_taos
.
GetQueryApi
();
var
kvs
=
from
k
in
keys
.
Split
(
';'
,
','
)
select
$"r[\"_field\"] == \"
{
k
}
\""
;
var
v
=
query
.
QueryAsync
(
@
$"
from
(
bucket
:
""
iotsharp
-
bucket
""
)
|>
range
(
start
:
-
72
h
)
|>
filter
(
fn
:
(
r
)
=>
r
[
""
_measurement
""
]
==
""
TelemetryData
""
)
|>
filter
(
fn
:
(
r
)
=>
r
[
""
DeviceId
""
]
==
""
{
deviceId
}
""
)
|>
filter
(
fn
:
(
r
)
=>
{
string
.
Join
(
" or "
,
kvs
)})
|>
group
(
columns
:
[
""
_field
""
])
|>
last
()
");
_taospool
.
Return
(
_taos
);
return
Task
.
FromResult
(
dt
);
return
FluxToDtoAsync
(
v
);
}
...
...
@@ -85,13 +81,37 @@ from(bucket: ""iotsharp-bucket"")
public
Task
<
List
<
TelemetryDataDto
>>
LoadTelemetryAsync
(
Guid
deviceId
,
string
keys
,
DateTime
begin
,
DateTime
end
)
{
InfluxDBClient
_taos
=
_taospool
.
Get
();
IEnumerable
<
string
>
kvs
=
from
k
in
keys
select
$" keyname = '
{
k
}
' "
;
string
sql
=
$"select tbname,keyname from telemetrydata where deviceid='
{
deviceId
:
N
}
' and (
{
string
.
Join
(
"or"
,
kvs
)
}
) "
;
List
<
TelemetryDataDto
>
dt
=
null
;
// SQLToDTByDate(begin, end, _taos, sql);
var
query
=
_taos
.
GetQueryApi
();
var
kvs
=
from
k
in
keys
.
Split
(
';'
,
','
)
select
$"r[\"_field\"] == \"
{
k
}
\""
;
var
v
=
query
.
QueryAsync
(
@
$"
from
(
bucket
:
""
iotsharp
-
bucket
""
)
|>
range
(
start
:
{
begin
:
o
},
stop
:{
end
:
o
})
|>
filter
(
fn
:
(
r
)
=>
r
[
""
_measurement
""
]
==
""
TelemetryData
""
)
|>
filter
(
fn
:
(
r
)
=>
r
[
""
DeviceId
""
]
==
""
{
deviceId
}
""
)
|>
filter
(
fn
:
(
r
)
=>
{
string
.
Join
(
" or "
,
kvs
)})
|>
group
(
columns
:
[
""
_field
""
])
|>
yield
()
");
_taospool
.
Return
(
_taos
);
return
Task
.
FromResult
(
dt
);
return
FluxToDtoAsync
(
v
);
}
private
async
Task
<
List
<
TelemetryDataDto
>>
FluxToDtoAsync
(
Task
<
List
<
FluxTable
>>
v
)
{
List
<
TelemetryDataDto
>
dt
=
new
List
<
TelemetryDataDto
>();
(
await
v
)?.
ForEach
(
ft
=>
{
ft
.
Records
.
ForEach
(
fr
=>
{
dt
.
Add
(
new
TelemetryDataDto
()
{
KeyName
=
fr
.
GetField
(),
DateTime
=
fr
.
GetTimeInDateTime
().
GetValueOrDefault
(),
Value
=
fr
.
GetValue
()
});
});
});
return
dt
;
}
public
Task
<
List
<
TelemetryDataDto
>>
LoadTelemetryAsync
(
Guid
deviceId
,
DateTime
begin
)
...
...
@@ -102,10 +122,15 @@ from(bucket: ""iotsharp-bucket"")
public
Task
<
List
<
TelemetryDataDto
>>
LoadTelemetryAsync
(
Guid
deviceId
,
DateTime
begin
,
DateTime
end
)
{
InfluxDBClient
_taos
=
_taospool
.
Get
();
string
sql
=
$"select tbname,keyname from telemetrydata where deviceid='
{
deviceId
:
N
}
'"
;
List
<
TelemetryDataDto
>
dt
=
null
;
//SQLToDTByDate(begin, end, _taos, sql);
var
query
=
_taos
.
GetQueryApi
();
var
v
=
query
.
QueryAsync
(
@
$"
from
(
bucket
:
""
iotsharp
-
bucket
""
)
|>
range
(
start
:
{
begin
:
o
},
stop
:{
end
:
o
})
|>
filter
(
fn
:
(
r
)
=>
r
[
""
_measurement
""
]
==
""
TelemetryData
""
)
|>
filter
(
fn
:
(
r
)
=>
r
[
""
DeviceId
""
]
==
""
{
deviceId
}
""
)
|>
yield
()
");
_taospool
.
Return
(
_taos
);
return
Task
.
FromResult
(
dt
);
return
FluxToDtoAsync
(
v
);
}
public
async
Task
<
bool
>
StoreTelemetryAsync
(
RawMsg
msg
)
...
...
IoTSharp/Storage/InfluxDBV1Storage.cs
浏览文件 @
02d87f7c
...
...
@@ -59,18 +59,7 @@ namespace IoTSharp.Storage
return
Task
.
FromResult
(
dt
);
}
//private List<TelemetryDataDto> SQLToDTByDate(DateTime begin, DateTime end, TaosConnection db, string sql)
//{
// List<TelemetryDataDto> dt = new List<TelemetryDataDto>();
// List<(string tbname, string keyname)> list = db.CreateCommand(sql).ExecuteReader().ToList<(string tbname, string keyname)>();
// foreach ((string tbname, string keyname) item in list)
// {
// string susql = $" select * from {item.tbname} where ts >={begin:yyyy-MM-dd HH:mm:ss.fff} and ts <={end:yyyy-MM-dd HH:mm:ss.fff}";
// List<TelemetryDataDto> dtx = SqlToTDD(db, susql, "", "", item.keyname);
// dt.AddRange(dtx);
// }
// return dt;
//}
public
Task
<
List
<
TelemetryDataDto
>>
LoadTelemetryAsync
(
Guid
deviceId
,
string
keys
,
DateTime
begin
)
{
return
LoadTelemetryAsync
(
deviceId
,
keys
,
begin
,
DateTime
.
Now
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录