Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
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 31
Tags
more
Archives
Today
Total
관리 메뉴

JINIers

jupyterlab 이용 빅쿼리 호출하기(Bigquery → Vertex AI) 본문

GCP/구성연습

jupyterlab 이용 빅쿼리 호출하기(Bigquery → Vertex AI)

JINIers 2022. 5. 26. 13:41

jupyterlab 이용 빅쿼리 호출하기(Bigquery → Vertex AI)

 

vertex ai > workbench > user-management notebooks > new notebook 으로 노트북 생성 > open jupyterlab

 

 

 

notebook > python3으로 들어가 > ___.ipynb 파일을 만든다.

 

 

 

[1]

!pip install google-cloud-bigquery
!pip install --upgrade google-cloud-bigquery-storage

[1] 실행

 

 

[2]

from google.cloud import bigquery
client = bigquery.Client()


[3] 전체 데이터 추출

sql = """
  SELECT
    sensorID, status, temperature,
    COUNT(1) AS count
  FROM
    `pubsubtt.senset.sentable`
  GROUP BY
    sensorID, temperature, status
  ORDER BY
    count DESC
"""
df = client.query(sql).to_dataframe()
df.head()

전체 데이터 추출 실행

 

* 불러오는 bigquery의 경우 pub/sub으로 받은 json 데이터를 이용하였다.

물론 저 값은 전부 내 임의로 지정함



[4] gas 데이터만 추출

sql = """
  SELECT
    sensorID, status, temperature, 
  FROM
    `pubsubtt.senset.sentable`
  WHERE
    sensorID LIKE 'gas-%'
  GROUP BY
    sensorID, temperature, status
"""
df = client.query(sql).to_dataframe()
df.head()

gas 데이터만 실행


# 쿼리 구문 에러 났을 때
▶ bigquery > 새로 탭 생성 > sql = """ """ 을 제외한 나머지 구문을 먼저 넣고 돌려본다. 데이터가 뽑히면 그대로 주피터랩에 넣고 'sql = """ """ ' 을 포함하여 돌린다.
와 이걸 3일동안 에러를 못찾고 있다가 부들부들
sql 쿼리문 검사기에 돌려도 정상이라고 떠서 에러를 못찾고 있다가 !!! 부들부들 ㅜㅜ
도움을 주셔서 해결할 수 있었음

 

 

 

[5] 추출데이터 요약 / 평균치가 나옴

df.groupby(['sensorID', 'status']).mean()

[5] 실행


[6] 추출데이터 그래프로 만들기

df.plot()

[6] 실행

 

근데 좀 그래프가 이상해

당연함 난 주피터랩을 처음써보니까 하나도 몰라

아마도 추출된 가스 데이터[4]를 이용해서 그래프가 만들어진 것 같음

x와 y축 지정을 하나도 안해줬고 그래서 서치한 대로 일단 만들어서 돌린거라 고양이 모양으로 나옴

 

제법 고양이같잖아....?

흥 귀여워

귀여우니까 너 메인임

 


[7] electronic 데이터만 추출

sql = """
  SELECT
    sensorID, status, temperature, 

  FROM
    `pubsubtt.senset.sentable`
  WHERE
    sensorID LIKE 'electronic-%'
  GROUP BY
    sensorID, temperature, status
"""
df = client.query(sql).to_dataframe()
df.head()

[7] 실행

 


[8] 데이터 요약

df.groupby(['sensorID', 'status']).mean()

 




[-] 원래는 얘를 돌려야한다.

pivot_table = df.pivot(index='sensorID', columns='status', values='temperature')
pivot_table.plot(kind='line', stacked=True, figsize=(15,7));


▶ 코드는 맞지만 에러가 뜨는 이유 : 중복값이 존재하기때문에 표를 만들수가 없다.
     → 1차적으로 요약해 통계량을 낸 뒤[5], 피벗테이블로 전환


나같은 경우에는 data에 timestamp가 없어 line 형식으로 변환해주기 어려웠다.
→ bigquery에 timestamp를 넣어주도록하자.

 

 

끝.

 

※ 참고

* 빅쿼리 가이드 : https://zzsza.github.io/bigquery/guide.html

https://wooiljeong.github.io/python/python-bigquery/

Comments