Commit 3096fb08 authored by KangMin An's avatar KangMin An
Browse files

Update: 데이터 전처리 일부. 지역 코드 이름 오름차순 정렬 반환.

parent a16834d5
...@@ -64,9 +64,9 @@ PostgreSQL DB를 이용하여, 날씨 데이터와 분석 결과를 저장합니 ...@@ -64,9 +64,9 @@ PostgreSQL DB를 이용하여, 날씨 데이터와 분석 결과를 저장합니
데이터 분석용 파일의 형식은 csv이며 내용은 다음과 같습니다. 데이터 분석용 파일의 형식은 csv이며 내용은 다음과 같습니다.
| Header | date | temp_out | humi_out | press | wind_speed | temp_in | humi_in | | Header | date | temp_out | humi_out | press | wind_speed | temp_in | humi_in | lights |
| :------: | :----------: | :-------: | :-------: | :---: | :--------: | :-------: | :-------: | | :------: | :----------: | :-------: | :-------: | :---: | :--------: | :-------: | :-------: | :----: |
| Contents | 날짜 및 시각 | 실외 온도 | 실외 습도 | 기압 | 풍속 | 실내 온도 | 실외 습도 | | Contents | 날짜 및 시각 | 실외 온도 | 실외 습도 | 기압 | 풍속 | 실내 온도 | 실외 습도 | 광도 |
<br> <br>
......
...@@ -139,9 +139,18 @@ export const getOutWeatherData = (req, res) => { ...@@ -139,9 +139,18 @@ export const getOutWeatherData = (req, res) => {
export const getLocCode = async (req, res) => { export const getLocCode = async (req, res) => {
try { try {
/* 통합 지역 코드 및 이름 json으로 생성 및 전송 */ /* 통합 지역 코드 및 이름 json으로 생성 및 전송 */
const does = await db.Doe.findAll({ logging: false }); const does = await db.Doe.findAll({
const sggs = await db.Sgg.findAll({ logging: false }); order: [["name_doe", "ASC"]],
const emds = await db.Emd.findAll({ logging: false }); logging: false,
});
const sggs = await db.Sgg.findAll({
order: [["name_sgg", "ASC"]],
logging: false,
});
const emds = await db.Emd.findAll({
order: [["name_emd", "ASC"]],
logging: false,
});
let doe_sgg = []; let doe_sgg = [];
let sgg_emd = []; let sgg_emd = [];
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
- 진행된 후의 Weights를 파일로 저장합니다. - 진행된 후의 Weights를 파일로 저장합니다.
""" """
import datetime
import sys import sys
import psycopg2 import psycopg2
...@@ -14,6 +15,13 @@ from preprocessing import preprocess ...@@ -14,6 +15,13 @@ from preprocessing import preprocess
dbconfig = {"host": sys.argv[1], "user": sys.argv[2], dbconfig = {"host": sys.argv[1], "user": sys.argv[2],
"password": sys.argv[3], "database": sys.argv[4]} "password": sys.argv[3], "database": sys.argv[4]}
today = datetime.datetime.today()
year = str(today.year)
month = str(today.month) if today.month >= 10 else '0'+str(today.month)
day = str(today.day) if today.day >= 10 else '0'+str(today.day)
collected_at = year + "-" + month + "-" + day
# DB 연결 # DB 연결
connection = psycopg2.connect( connection = psycopg2.connect(
database=dbconfig["database"], user=dbconfig["user"]) database=dbconfig["database"], user=dbconfig["user"])
...@@ -21,13 +29,23 @@ connection = psycopg2.connect( ...@@ -21,13 +29,23 @@ connection = psycopg2.connect(
# DB에 대한 동작을 위한 cursor 생성 # DB에 대한 동작을 위한 cursor 생성
cursor = connection.cursor() cursor = connection.cursor()
cursor.execute("SELECT email as host, loc_code, using_aircon FROM Users") cursor.execute("SELECT email, loc_code, using_aircon FROM Users")
hosts = cursor.fetchall() users = cursor.fetchall()
for user in users:
host = {"email": user[0], "loc_code": user[1], "using_aircon": user[2]}
for host in hosts:
# 데이터 전처리 # 데이터 전처리
preprocess(cursor, host) preprocess(cursor, host)
# 데이터 분석
params = "main_proceduer_function"
# 데이터 분석 결과 저장
cursor.execute("INSERT INTO \"Data_Processings\" (host,collected_at,params) VALUES (%s,%s,%s)",
(host["email"], collected_at, params))
# Cursor와 Connection 종료 # Cursor와 Connection 종료
cursor.close() cursor.close()
connection.close() connection.close()
""" """
### preprocessing.py # preprocessing.py
데이터 전처리를 위한 파일입니다. 데이터 전처리를 위한 파일입니다.
DB에 저장된 값들을 불러와 사용자 등록 장소의 날씨 데이터와 외부 날씨 데이터를 결합해 CSV 파일을 생성합니다.
""" """
def preprocess(cursor, host): def preprocess(cursor, host):
pass """
### preprocess(cursor, host)
- cursor : psycopg2의 SQL 실행을 위한 cursor.
- host : 사용자 정보.
사용자 정보를 바탕으로 외부 날씨와 내부 날씨를 검색해 CSV 파일로 작성합니다.
"""
cursor.execute(
"SELECT t2.collected_at as \"date\", temp_out, humi_out, press, wind_speed, temp_in, humi_in, lights FROM"
+ " (SELECT collected_at, temp as temp_out, humi as humi_out,press, wind_speed FROM Weather_Outs WHERE loc_code = %s) t1"
+ " JOIN "
+ " (SELECT collected_at, temp as temp_in, humi as humi_in, lights FROM Weather_Ins WHERE host = %s) t2"
+ " ON t1.collected_at = t2.collected_at", (host["loc_code"], host["email"],))
results = cursor.fetchall()
file = open("/src/dataprocessing/temp.csv", 'w')
# header
file.write("date,temp_out,humi_out,press,wind_speed,temp_in,humi_in,lights\n")
for result in results:
file.write("{0},{1},{2},{3},{4},{5},{6},{7}\n".format(
result[0], result[1], result[2], result[3], result[4], result[5], result[6], result[7]))
file.close()
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment