섹션 8 yfinance 강의 수강 중 발생한 오류
135
작성한 질문수 3
안녕하세요, 데이터 엔지니어에 관심을 가지고 이제 막 공부를 시작한 학생입니다.
섹션 8 yfinance 첫 번째 강의를 수강하던 도중에 에러가 생겨서 문의 남깁니다.
작성되어 있는 코드 중에
extract(symbol) >> load(file_path, symbol, schema, table)이 부분에서 문제가 생겼었습니다.
그래서
file_path = extract(symbol)
extract(symbol) >> load(file_path, schema, table)이렇게 수정해서 오류를 해결했는데, airflow web ui에서 다른 오류가 발생했길래 또 찾아보니 load함수에서 문제가 생긴 것 같습니다. file_path를 load함수에서도 다시 만들어줘서 snowflake에 데이터를 적재할 때 올바른 파일 경로를 찾지 못해서 생기는 오류가 발생하는거 같아요.
def load(file_path, schema, table):
cur = util.return_snowflake_conn("snowflake_conn")
try:
cur.execute(f"USE SCHEMA {schema};")
cur.execute(
f"""CREATE TABLE IF NOT EXISTS {table} (
date date,
open float,
close float,
high float,
low float,
volume int,
symbol varchar
)"""
)
cur.execute("BEGIN;")
delete_sql = f"DELETE FROM {table}"
logging.info(delete_sql)
cur.execute(delete_sql)
# 바로 받은 file_path 사용 (더 이상 경로 재생성 X)
util.populate_table_via_stage(cur, table, file_path)
cur.execute("COMMIT;")
except Exception as e:
cur.execute("ROLLBACK;")
raise e
finally:
file_name = os.path.basename(file_path)
table_stage = f"@%{table}"
cur.execute(f"REMOVE {table_stage}/{file_name}")
cur.close()요렇게 변경해주니까 데모 영상에 나온 것과 같이 똑같이 스노우플레이크에 잘 적재되었습니다.!
제가 제대로 해결한게 맞을까요??
답변 2
1
굉장히 진도가 빠르시네요. 문제를 알려주셔서 감사드립니다.
extract(symbol) >> load(file_path, symbol, schema, table)위 코드의 원래 의도는 file_path가 없이 아래처럼 호출하는 거였는데 GitHub에 그걸 제가 최종 반영하지 못했습니다.
extract(symbol) >> load(symbol, schema, table)원래 의도는 file_path를 주고 받지 말고 extract와 load 함수 각각이 동일한 방법으로 file_path를 계산해서 쓰려는 거였습니다 (airflow 커맨드 실행으로 태스크별 실행하면서 디버깅할 때 편의성을 위해 tasks들간의 의존도를 최대한 줄인다는 측면에서). 일단 GitHub에서는 이 방법으로 위 코드에서 load 함수 호출시 file_path를 삭제했습니다.
하지만 하신 것처럼 수정하셔도 문제 없습니다. 코드 간의 file_path의 관계가 더 명확히 보인다는 점이 이 방식의 장점이고 단점은 airflow tasks test YfinanceToSnowflake_fullrefresh load 형태로 커맨드라인에서 테스트를 못한다는 것입니다. 강의에서 이 부분을 설명하려 했는데 명확했는지는 모르겠습니다. 아주 잘 하셨습니다!
다시 한번 알려주셔서 감사드리고 GitHub 코드는 변경했습니다. 또 다른 질문이나 문제가 생기면 포스팅해주세요!
0
안녕하세요, 인프런 AI 인턴입니다. hodoldol님.
우선 데이터 엔지니어링에 흥미를 가지시고 공부를 시작하신 것을 환영합니다! 강의를 수강하면서 문제를 직접 해결하신 점에서도 많은 진전을 보이신 것 같습니다.
질문해 주신 문제에 대해 설명드리겠습니다. yfinance 데이터를 Snowflake에 적재하는 과정에서 발생한 문제는 파일 경로 처리와 관련된 것으로 보입니다. 로그나 에러 메시지 없이 문제를 정확히 판단하기는 어렵지만, file_path를 직접 전달하여 문제를 해결하신 방법은 매우 적절해 보입니다.
기존 코드에서 file_path 변수를 직접 재사용하지 않고 함수 내에서 경로를 재생성하려고 하여 발생한 문제를 수정하신 것 같습니다. 데이터 적재 시, 올바른 파일 경로로 데이터를 정확히 식별하는 것이 중요합니다. 귀하께서 수정하신 방식은 이러한 문제를 방지할 수 있는 좋은 접근입니다.
관련 강의의 데모 영상과 비교하여 동일한 결과가 나왔다면 문제 없이 잘 해결하신 것으로 판단됩니다. 만약 이후에도 문제가 발생한다면, 오류 로그를 통해 문제의 원인을 더 깊이 파악하시는 것도 좋겠습니다.
비슷한 오류 발생 시, 아래 링크를 참고로 하시면 좋을 것 같습니다:
- [왜 데이터를 코드로 전처리하는가?] 관련 질문 및 답변
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
질문 드립니다.
0
25
2
48강 csv
1
52
2
자료 다운로드 하면 링크가 모두 클릭이 안됨
0
93
2
48강 강의 여전히 49강과 같은 강의가 나옵니다
0
93
3
forloop으로 task 정의시 task_id 정해지는 로직
0
88
3
SWAP 문법 활용 이유
1
90
2
copy into 성능 저하
1
68
2
데이터 가져올때 1달치만 가져오는 상태
1
78
2
31번 실습시 에러 발생
0
83
2
pdf 링크 오류
1
122
2
Window11 Home 버전 도커 설치 방법 - Docker Desktop - Unexpected WSL error
0
407
1
이전 강의에서도 그랬지만 소리가 너무 작아요
2
113
2
nps.csv 파일 위치
0
123
2
강의가 잘못 올라온것이 있네요. => 48강
1
138
4
Airflow 웹 UI에서 파일 디렉토리 구조 확인이 가능한가요?
0
184
1
본문과 같은 메시지가 뜨면서, 어느 순간부터 계속 안되는데, 어떤 이유일까요 ㅠㅠ
1
217
2
yfinance 주식 읽어 오기 처음 중, no module named helpers 에러
2
159
2
Data Drift 발생시 머신러닝 모델이 동작하지 않는 것의 의미
1
156
1
docker 에러
0
199
2
Airflow UI DAGs 리스트들
1
199
2
nps.csv 파일 위치 및 실습 질문
0
204
2
Airflow Variables 설정
1
121
2
섹션 8 PostgresToSnowflake DAG 실행 중 발생한 오류
1
123
2
ETL 작성 이유
1
192
3





