Inflearn Community Q&A
filter 이후 select 와 이전 select 차이점
Written on
·
226
0
안녕하세요 선생님 강의 말미에 select 의 순서가 중요하다고 가르쳐 주셨는데
실제로 실행해보니까 결과값은 동일해보이는건 어떤 이유 때문인지 궁금합니다.
(혹시나 싶어서 조회할 때마다 전체 테이블을 같이 조회해봤습니다.)
-----------------------------
data_sdf.filter(upper(data_sdf['Name']).like('%M%')).select('*').show()
data_sdf.select('*').show()
+---------+----+------+ | Name|Year|Gender| +---------+----+------+ | Chulmin|2011| Male| |Myunghyun|2015| Male| | Chulman|2011| Male| +---------+----+------+ +---------+----+------+ | Name|Year|Gender| +---------+----+------+ | Chulmin|2011| Male| | Wansoo|2016| Male| |Myunghyun|2015| Male| | Hyunjoo|2015|Female| | Chulman|2011| Male| +---------+----+------+
-------------------------
from pyspark.sql.functions import col, upper data_sdf.select('*').filter(upper(col('Name')).like('%M%')).show() data_sdf.select('*').show()
+---------+----+------+ | Name|Year|Gender| +---------+----+------+ | Chulmin|2011| Male| |Myunghyun|2015| Male| | Chulman|2011| Male| +---------+----+------+ +---------+----+------+ | Name|Year|Gender| +---------+----+------+ | Chulmin|2011| Male| | Wansoo|2016| Male| |Myunghyun|2015| Male| | Hyunjoo|2015|Female| | Chulman|2011| Male| +---------+----+------+
---------------------------
항상 좋은 강의 감사합니다.
Answer 1
0
안녕하십니까,
위에서 적어주신 코드는 별 문제가 없지만,
data_sdf.select('Year', 'Gender').filter(upper(data_sdf['Name']).like('%M%')) 이라고 하면 수행이 안됩니다. 위 코드는 data_sdf.select('Year', 'Gender') 에서 두개의 컬럼 'Year'와 'Gender'를 추출한 뒤에 이 2개의 컬럼에 해당하지 않는 'Name' 컬럼으로 filtering을 수행하기 때문입니다.
마치 아래 SQL과 같이 이미 Year, Gender밖에 없는 temp_01 에서 Name 컬럼으로 필터링을 시도하려는 것과 같기 때문에 수행이 되지 않습니다.
with temp_01
as
select Year, Gender
from table a
select * from temp_01 where Name like '%M'
감사합니다.






그냥 우연이었나보네요............. 늦은시간인데 감사합니다~