문제

저는 Google의 BigQuery를 처음 접했습니다.

타임스탬프를 구문 분석하고 싶습니다(yyyy/mm/dd:hh:mm:ss) 일과 월을 기준으로 일을 주로 분류하고자 합니다.이 작업을 수행하는 BigQuery 함수를 찾지 못했습니다.

그래서 글을 쓸 수 있는 방법이 있는지 궁금합니다. UDF 그런 다음 BigQuery 쿼리에서 액세스합니다.

도움이 되었습니까?

해결책

여기에는 두 가지 질문이 있으므로 두 가지 답변이 있습니다.

  • BigQuery 하다 UDF를 지원합니다: 문서.(처음 답변했을 때는 그렇지 않았습니다.)

  • UDF가 없어도 날짜 버킷팅은 여전히 ​​가능합니다.BigQuery에는 일회성 파싱 기능이 있습니다. PARSE_UTC_USEC, 이는 다음 형식의 입력을 기대합니다. YYYY-MM-DD hh:mm:ss.당신은 사용해야합니다 REGEXP_REPLACE 날짜를 올바른 형식으로 얻으려면.일단 그 일을 하고 나면, UTC_USEC_TO_WEEK 몇 주로 나누어서 그룹화할 수 있습니다.따라서 모든 것을 하나로 묶어 테이블에 다음과 같은 열이 있는 경우 timestamp, 다음과 같은 방법을 통해 주별 집계를 얻을 수 있습니다.

    SELECT week, COUNT(week)
    FROM (SELECT UTC_USEC_TO_WEEK(
                   PARSE_UTC_USEC(
                     REGEXP_REPLACE(
                       timestamp, 
                       r"(\d{4})/(\d{2})/(\d{2}):(\d{2}):(\d{2}):(\d{2})", 
                       r"\1-\2-\3 \4:\5:\6")), 0) AS week
          FROM mytable) 
    GROUP BY week;
    

    참고 0 여기에 "시작"으로 사용할 요일에 대한 논쟁이 있습니다.저는 일요일을 사용했지만 "비즈니스" 용도로는 일요일을 사용했습니다. 1 (즉.월요일)이 더 의미가 있을 것 같습니다.

꼭 필요한 경우를 대비해, 타임스탬프 함수 섹션 문서에 도움이 됩니다.

다른 팁

BigQuery의 UDF 지원은 이제 여기 있습니다! https://cloud.google.com/bigquery/user-defined-functions

문자열 타임 지정자를 JavaScript Date 객체로 변환하고 일부의 속성을 추출하는 몇 가지 코드가 있습니다. https://developer.mozilla.org/en-US / Docs / Web / JavaScript / Reference / Global_Objects / date js 날짜에 사용할 수있는 속성에 대한 정보는

쿼리 (중첩 된 선택을 테이블로 바꾸기) :

SELECT day_of_week, month_date
FROM parseDate(select '2015/08/01 12:00:00' as date_string);
.

코드 :

function parsedate(row, emit) {
  var d = new Date(row.date_string);
  emit({day_of_week: d.getDay(),
        month_date: d.getDate()});
}

bigquery.defineFunction(
  'parseDate',                           // Name of the function exported to SQL
  ['date_string'],                    // Names of input columns
  [{'name': 'day_of_week', 'type': 'integer'},
   {'name': 'month_date', 'type': 'integer'}],
  parsedate
);
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top