실제 첫 번째 질문은 사람들이 왜 순수 SQL 추상화보다 DataFrame 추상화로 생산성이 더 높은가입니다.
TLDR; SQL은 (인간적인) 개발 및 디버깅 프로세스에 중점을 두지 않으며 DataFrames는 있습니다.
주된 이유는 DataFrame 추상화를 통해 상세하고 읽기 어려운 중첩을 피하면서 SQL 문을 구성 할 수 있기 때문입니다. 중첩 된 루틴을 작성하고 주석을 달아 주석 처리 한 후 주석을 해제하는 패턴은 단일 변환 행으로 대체됩니다. 자연스럽게 (물론 스파크에서도) 한 줄씩 사물을 실행하고 결과를 볼 수 있습니다.
테이블에 새 변환 된 (문자열 맹 글링 된 열)을 추가 한 다음 그룹화하고 집계를 수행하는 예를 고려하십시오. SQL은 꽤 추악합니다. 팬더는이 문제를 해결할 수 있지만 실제로 큰 데이터 또는 특정 파티션 (아마도 최근 개선)과 관련하여 몇 가지 사항이 누락되었습니다.
DataFrames는 팬더를 사용하더라도 일부 SQL 플래너에 렌더링되지 않더라도 SQL 루틴에 대한 고급 API로 간주되어야합니다.
-
이것에 대해 많은 기술 토론을 할 수 있지만 아래 사용자 관점을 고려하고 있습니다.
SQL과 달리 Pandas 데이터 조작에 대해 더 많은 질문을 볼 수있는 한 가지 간단한 이유는 정의에 따라 SQL을 사용하는 것이 데이터베이스를 사용한다는 의미이며 요즘에는 많은 유스 케이스가 ' 일대일 작업 (.csv, 웹 API 등) 이 경우 데이터베이스에서로드, 저장, 조작 및 추출이 불가능합니다.
그러나 사용 사례가 Pandas 또는 SQL을 사용하여 정당화 될 수있는 경우를 고려할 때 확실히 틀린 것은 아닙니다. 많은 반복적 인 데이터 조작 작업을 수행하고 출력을 유지하려면 항상 SQL을 먼저 시도하는 것이 좋습니다. 이 경우에도 많은 사용자가 SQL을 거치지 않는 이유는 두 가지입니다.
첫째, 팬더가 SQL에 비해 갖는 주요 이점은 더 넓은 파이썬 세계의 일부라는 것입니다. 즉, 한 번에 실패하면 데이터를로드, 정리, 조작 및 시각화 할 수 있습니다 (팬더를 통해 SQL을 실행할 수도 있습니다 ...). 다른 하나는, 너무 많은 사용자가 SQL의 기능 범위를 모른다는 것입니다. 모든 초보자는 DB에서 다음 장소로 데이터를 가져 오기위한 수단으로 SQL의 '추출 구문'(SELECT, FROM, WHERE 등)을 배웁니다. 일부는 더 고급 그룹화 및 반복 구문 중 일부를 선택할 수 있습니다. 그러나 그 후에는 전문가 (DBA, 데이터 엔지니어 등)에게 다가 갈 때까지 지식이 상당히 부족한 경향이 있습니다.
tl; dr : 종종 SQL의 기능 범위에 대한 사용 사례, 편의성 또는 지식의 차이로 인해 발생합니다.