inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Những điều cơ bản về Airflow được chia sẻ bởi nhà lãnh đạo dữ liệu tại Thung lũng Silicon

Đọc dữ liệu chứng khoán với yfinance: Cập nhật toàn bộ - Bao gồm thực hành

섹션 8 yfinance 강의 수강 중 발생한 오류

137

hodoldol

3 câu hỏi đã được viết

1

안녕하세요, 데이터 엔지니어에 관심을 가지고 이제 막 공부를 시작한 학생입니다.

섹션 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()

요렇게 변경해주니까 데모 영상에 나온 것과 같이 똑같이 스노우플레이크에 잘 적재되었습니다.!
제가 제대로 해결한게 맞을까요??

python sql airflow snowflake

Câu trả lời 2

1

keeyonghan

굉장히 진도가 빠르시네요. 문제를 알려주셔서 감사드립니다.

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

hodoldol

넵 답변해주셔서 감사드립니다.!! 강의도 너무 잘 듣고 있습니다~~

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. hodoldol님.

우선 데이터 엔지니어링에 흥미를 가지시고 공부를 시작하신 것을 환영합니다! 강의를 수강하면서 문제를 직접 해결하신 점에서도 많은 진전을 보이신 것 같습니다.

질문해 주신 문제에 대해 설명드리겠습니다. yfinance 데이터를 Snowflake에 적재하는 과정에서 발생한 문제는 파일 경로 처리와 관련된 것으로 보입니다. 로그나 에러 메시지 없이 문제를 정확히 판단하기는 어렵지만, file_path를 직접 전달하여 문제를 해결하신 방법은 매우 적절해 보입니다.

기존 코드에서 file_path 변수를 직접 재사용하지 않고 함수 내에서 경로를 재생성하려고 하여 발생한 문제를 수정하신 것 같습니다. 데이터 적재 시, 올바른 파일 경로로 데이터를 정확히 식별하는 것이 중요합니다. 귀하께서 수정하신 방식은 이러한 문제를 방지할 수 있는 좋은 접근입니다.

관련 강의의 데모 영상과 비교하여 동일한 결과가 나왔다면 문제 없이 잘 해결하신 것으로 판단됩니다. 만약 이후에도 문제가 발생한다면, 오류 로그를 통해 문제의 원인을 더 깊이 파악하시는 것도 좋겠습니다.

비슷한 오류 발생 시, 아래 링크를 참고로 하시면 좋을 것 같습니다:
- [왜 데이터를 코드로 전처리하는가?] 관련 질문 및 답변

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

6-6

0

14

1

48강 csv

1

63

2

자료 다운로드 하면 링크가 모두 클릭이 안됨

0

100

2

48강 강의 여전히 49강과 같은 강의가 나옵니다

0

97

3

forloop으로 task 정의시 task_id 정해지는 로직

0

93

3

SWAP 문법 활용 이유

1

92

2

copy into 성능 저하

1

70

2

데이터 가져올때 1달치만 가져오는 상태

1

79

2

31번 실습시 에러 발생

0

84

2

pdf 링크 오류

2

129

2

Window11 Home 버전 도커 설치 방법 - Docker Desktop - Unexpected WSL error

0

429

1

이전 강의에서도 그랬지만 소리가 너무 작아요

2

113

2

nps.csv 파일 위치

0

124

2

강의가 잘못 올라온것이 있네요. => 48강

1

141

4

Airflow 웹 UI에서 파일 디렉토리 구조 확인이 가능한가요?

0

185

1

본문과 같은 메시지가 뜨면서, 어느 순간부터 계속 안되는데, 어떤 이유일까요 ㅠㅠ

1

218

2

yfinance 주식 읽어 오기 처음 중, no module named helpers 에러

2

160

2

Data Drift 발생시 머신러닝 모델이 동작하지 않는 것의 의미

1

157

1

docker 에러

0

201

2

Airflow UI DAGs 리스트들

1

203

2

nps.csv 파일 위치 및 실습 질문

0

206

2

Airflow Variables 설정

1

123

2

섹션 8 PostgresToSnowflake DAG 실행 중 발생한 오류

1

125

2

ETL 작성 이유

1

197

3