Clichouse TTL

main
DenisN 2025-07-02 09:55:09 -04:00
parent fcfd5e1aae
commit a0096e652c
2 changed files with 56 additions and 15 deletions

View File

@ -4,7 +4,7 @@ import { isInternalThread } from 'node:worker_threads';
@Injectable()
export class ClickhouseService {
async ClickHouseConnect(): Promise<any>{
async ClickHouseConnect(): Promise<ClickHouse>{
let connectionData = new ClickHouse({
url: 'http://192.168.2.37',
port: 8123,
@ -38,7 +38,7 @@ export class ClickhouseService {
}
async ClickHouseDBsCreate(parameterBody: any): Promise<any> {
async ClickHouseDBsCreate(): Promise<ClickHouse> {
let connectionData = await this.ClickHouseConnect();
// let queries = [
@ -63,16 +63,22 @@ export class ClickhouseService {
`CREATE TABLE IF NOT EXISTS raw_parameters (
EventDataTime DateTime64,
ParameterBody String,
CreateDataTime DateTime64,
CreateDataTime DateTime,
) ENGINE = MergeTree()
PRIMARY KEY (EventDataTime)`,
PRIMARY KEY (EventDataTime)
PARTITION BY toYYYYMM(CreateDataTime)
TTL CreateDataTime + INTERVAL 3 MONTH
SETTINGS storage_policy = 'default'`,
`CREATE TABLE IF NOT EXISTS complex_parameters (
EventDataTime DateTime64,
ParameterBody String,
CreateDate DateTime64,
CreateDataTime DateTime,
) ENGINE = MergeTree()
PRIMARY KEY (EventDataTime)`,
PRIMARY KEY (EventDataTime)
PARTITION BY toYYYYMM(CreateDataTime)
TTL CreateDataTime + INTERVAL 3 MONTH
SETTINGS storage_policy = 'default'`,
`CREATE TABLE IF NOT EXISTS raw_parameters_extended (
EventDataTime DateTime64,
@ -80,9 +86,12 @@ export class ClickhouseService {
ParameterName String,
ParameterValue Float64,
ParameterBody String,
CreateDate DateTime64,
CreateDataTime DateTime,
) ENGINE = MergeTree()
PRIMARY KEY (EventDataTime)`,
PRIMARY KEY (EventDataTime)
PARTITION BY toYYYYMM(CreateDataTime)
TTL CreateDataTime + INTERVAL 3 MONTH
SETTINGS storage_policy = 'default'`,
`CREATE TABLE IF NOT EXISTS complex_parameters_extended (
EventDataTime DateTime64,
@ -90,9 +99,12 @@ export class ClickhouseService {
ParameterName String,
ParameterValue Float64,
ParameterBody String,
CreateDate DateTime64,
CreateDataTime DateTime,
) ENGINE = MergeTree()
PRIMARY KEY (EventDataTime)`,
PRIMARY KEY (EventDataTime)
PARTITION BY toYYYYMM(CreateDataTime)
TTL CreateDataTime + INTERVAL 3 MONTH
SETTINGS storage_policy = 'default'`,
`CREATE TABLE IF NOT EXISTS status_events (
EventDataTime DateTime64,
@ -102,7 +114,7 @@ export class ClickhouseService {
ParameterBody String,
PreviousStatus Int32,
CurrentStatus Int32,
CreateDate DateTime64,
CreateDataTime DateTime,
) ENGINE = MergeTree()
PRIMARY KEY (EventDataTime)`,
@ -119,7 +131,33 @@ export class ClickhouseService {
// console.log(query, r);
}
console.log(connectionData);
// console.log(connectionData);
return connectionData;
}
async ClickHouseAddRecords(recordFormat: string, parameterBody: any): Promise<any>{
let connectionData = await this.ClickHouseDBsCreate();
switch(recordFormat){
case 'raw':
let insertRawQuery = 'INSERT INTO raw_parameters VALUES(toDateTime(now()), \'{{parameterBody}}\', toDateTime(now()));';
// console.log(insertQuery);
insertRawQuery = insertRawQuery.replace('{{parameterBody}}', parameterBody);
// console.log(insertRawQuery);
// for (let query of insertQuery) {
let retRaw = await connectionData.query(insertRawQuery).toPromise();
// console.log(retRaw);
// }
break;
case 'complex':
let insertComplexQuery = 'INSERT INTO complex_parameters VALUES(toDateTime(now()), \'{{parameterBody}}\', toDateTime(now()));';
// console.log(insertQuery);
insertComplexQuery = insertComplexQuery.replace('{{parameterBody}}', parameterBody);
// console.log(insertComplexQuery);
// for (let query of insertQuery) {
let retComplex = await connectionData.query(insertComplexQuery).toPromise();
// console.log(retComplex);
// }
break;
}
}
}

View File

@ -78,12 +78,15 @@ export class ZvksmetricsService {
let intermediate = await this.getComplexMetricsValues(inp, prev, complex, model, scope);
// console.log(intermediate);
console.log(intermediate);
let ctp: any = classToPlain(intermediate);
let parameterBody: string = JSON.stringify(ctp);
let copmplexParameterBody: string = JSON.stringify(ctp);
let rtp: any = classToPlain(inputData);
let rawParameterBody: string = JSON.stringify(rtp);
// console.log(parameterBody);
let abc = new ClickhouseService();
abc.ClickHouseDBsCreate(parameterBody);
await abc.ClickHouseAddRecords('raw', rawParameterBody);
await abc.ClickHouseAddRecords('complex', copmplexParameterBody);
// const val = JSON.parse(JSON.stringify(model[0].values));