ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [BigQuery] Backtick 사용에 대한 고찰
    개발 끄적 2022. 4. 5. 23:40

    Backtick 개요

    BigQuery의 테이블 주소는 아래와 같이 세 구역으로 구성되어있다. 

     

    my-project.my_dataset.my_table
    프로젝트 (점) 데이터셋 (점) 테이블

    위 처럼 프로젝트 이름에는 대시(-)를 쓸 수 있고 데이터셋과 테이블엔 대시는 안되고 언더바(_)만 허용된다. 

    문제 상황

    그간 BigQuery를 쓰면서 사실 누가 딱히 알려준건 아닌데 어느순간부터 백틱을 써왔다. 

    누가 가르쳐준 것도 아니고.. 나도 왜인지 기억이 안난다만 습관적으로 아래와 같이 써오고 있었다. 

    `my-project.my_dataset`.my_table

     

    최근에 몇 가지 문제가 생겨서 백틱에 대해서 제대로 알아보게 되었다. 

     

    일단 만나게 된 문제는

    1. 다른 사람들의 쿼리를 보다보니 백틱 사용이 다들 제각각이다. 
    2. 특정 사용 방식이 잘 동작하는 경우도 있고 에러나는 경우도 있다. (일관성이 없음)

    Google의 Backtick 사용 가이드

    구글링을 해보면 많은 블로그 글과 stackoverflow 답변에서 백틱 사용을 권장한다. 

    그런데 사실 시원하게 이유를 설명해주는 곳은 없고 그나마 기억에 남는 답변은 아래였다. 

    빼기 기호와 대시를 구분하기 위해 백틱으로 감싸주세요.

     

    그런데 이것도 답변에 따라 사용법이 다르다. 

    아래와 같이 세 가지나 사용사례가 보인다. 이런...

    `my-project.my_dataset`.my_table
    `my-project.my_dataset.my_table`
    `my-project`.`my-dataset`.`my_table`

     

    그러던 중 재밌는 글을 발견했는데 

    https://www.reddit.com/r/bigquery/comments/fgk31y/new_in_bigquery_no_more_backticks_around_table/

    이 글에 따르면 2019년에 백틱을 사용하지 않아도 되는것으로 업데이트 된 것 같다. 

     

    구글 문서를 보면 역시나 아래와 같이 백틱을 사용하지 않는다. 

    -- Valid table path.
    myproject.mydatabase.mytable287​

    사실 며칠전만해도 zetasql의 문서처럼 더 명확히 적혀있었는데 문서가 업데이트된 것 같다. 

    그런데 에러가 발생한다!?!?!?

    최근 내가 하고있는 일은 직접 쿼리를 작성하는게 아니라 

    이런 쿼리를 사용할 수 있는 인프라를 만들고 있다. (MLOps)

     

    그러다보니 일관성 있는 가이드가 필요한지라 백틱을 사용하지 않는 것으로 해봤다. 

    그런데 백틱을 다 제거하니 에러가 발생한다!?!?!

     

    삽질을 하다보니 알게된건 create model문에서는 백틱이 필요하다. 

    구글 문서를 보니 실제로 그렇게 되어있다. 

    결론 요약

    1. 테이블 경로에는 굳이 백틱이 필요하지 않다. 
    2. 2019년에 패치된듯하니 검색에 유의하자. 
    3. 모델 경로는 백틱이 필요하다. 

     

    일관성있게 백틱을 다 사용하지 않게 해주면 좋겠는데 아쉽다. 

    댓글

Designed by Tistory.