일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Java
- MySQL
- ELASTIC
- licence delete curl
- license delete
- 900gle
- Test
- token filter test
- Mac
- zip 암호화
- Kafka
- aggregation
- API
- analyzer test
- Elasticsearch
- 차트
- TensorFlow
- aggs
- query
- springboot
- Python
- sort
- zip 파일 암호화
- flask
- matplotlib
- high level client
- plugin
- 파이썬
- docker
- License
Archives
- Today
- Total
개발잡부
[python] 데이터 검증 본문
반응형
쿼리 튜닝을 해서 배포를 했는데 데이터를 검증 해야한다..
근데 .. 양이 많네..
promoInfos 정보를 가져오는 부분이 쿼리가 튜닝 되었으니 해당 정보만 가져온다.
{
"track_total_hits": true,
"size": 10000,
"_source": [
"itemNo",
"itemStoreInfo.storeId",
"promoInfos"
],
"query": {
"bool": {
"must": [
{
"exists": {
"field": "promoInfos"
}
},
{
"term": {
"itemStoreInfo.storeId": {
"value": "{store_id}"
}
}
}
]
}
},
"sort": [
{
"itemNo": {
"order": "desc"
}
}
]
}
그리곤 파일로 떨군다.
# -*- coding: utf-8 -*-
import json
import time
from datetime import datetime, timedelta
import urllib3
from elasticsearch import Elasticsearch
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
def start(i):
with open(INDEX_FILE) as index_file:
query = index_file.read().strip()
query_r = query.replace("{store_id}", str(i))
response = client.search(index=INDEX_NAME, body=query_r)
for hit in response["hits"]["hits"]:
print(hit["_source"]["itemNo"])
print(hit["_source"]["itemStoreInfo"]["storeId"])
print(hit["_source"]["promoInfos"])
f_o.write(str(hit["_source"]["itemNo"]) + "," + str(hit["_source"]["itemStoreInfo"]["storeId"]) + "," + str(hit["_source"]["promoInfos"]) + "\n")
##### MAIN SCRIPT #####
if __name__ == '__main__':
INDEX_NAME = "hyper-item"
INDEX_FILE = "./sql/data_diff.json"
client = Elasticsearch("https://elastic:co.kr:443/", ca_certs=False,
verify_certs=False)
for i in range (1, 130):
f_o = open("./data_new/origin_"+str(i)+".txt", 'w')
start(i)
f_o.close()
print("Done.")
As-is 는 data 디렉토리에 To-be 는 data_new 디렉토리에 파일로 생성
떨군 파일을 비교해 보자
import json
import time
from time import sleep
from datetime import datetime, timedelta
import urllib3
import difflib
from difflib import unified_diff
from elasticsearch import Elasticsearch
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
def read_file(i):
ori_file = './data/origin_' + str(i) + '.txt'
new_file = './data_new/origin_' + str(i) + '.txt'
with open(ori_file, 'r', encoding='utf-8') as file:
# 파일을 한 줄씩 읽기
for line in file:
# 줄 끝의 개행 문자를 제거
line = line.strip()
with open(new_file, 'r', encoding='utf-8') as file_new:
# 파일을 한 줄씩 읽기
for line_new in file_new:
array_ori = line.strip().split(',')
if line_new.startswith(array_ori[0]):
check_point = 0
if len(array_ori) > 1 :
promo_parts_ori = array_ori[2].split(" ")
array_ori[2] = promo_parts_ori
if isinstance(line_new, list):
line_new = line_new[0]
array_new = line_new.strip().split(',')
if len(array_ori) > 2 and len(array_new) > 2 :
if len(array_new) > 1 :
promo_parts_new = array_new[2].split(" ")
array_new[2] = promo_parts_new
if array_ori[0] == array_new[0] and array_ori[1] == array_new[1]:
check_point = 0
if sorted(array_ori[2]) == sorted(array_new[2]):
check_point = 0
print("배열 일치")
else:
check_point = 1
else:
check_point = 1
else:
check_point = 1
if check_point == 1:
f_o.write(f"[CHECK]{line}\n")
##### MAIN SCRIPT #####
if __name__ == '__main__':
for i in range (11, 130):
f_o = open("./confirm/diff_data_"+str(i)+".txt", 'w')
read_file(i)
f_o.close()
print("Done.")
일치하지 않으면 파일로 떨구는데
파일 사이즈가 0 인거 보면 다른게 없는 듯.
반응형
'Python' 카테고리의 다른 글
인덱스 복사를 쉘스크립트에서 실행 (0) | 2024.04.05 |
---|---|
python 비동기 API 호출 (0) | 2024.03.13 |
[python] ConnectionTimeout caused by - ReadTimeoutError (0) | 2024.03.07 |
[python] 날짜계산 (datetime) (0) | 2024.02.06 |
[python] DB data to json (0) | 2023.09.04 |
Comments