0

Google bigquery에서 문제가 있습니다. Bigquery에서 결과를 저장하고 복잡한 계산이 필요합니다. 따라서 우리는 Java에서 복잡한 연산을 수행하고 Google 클라우드 데이터 흐름의 도움을 받아 Google bigquery에 결과를 저장합니다.Google 클라우드 빅 쿼리 UDF 제한

그러나이 복잡한 계산은 java에서 완료하는 데 약 28 분이 걸립니다. 고객 요구 사항은 20 초 이내에 수행해야합니다.

Google bigquery UDF 옵션으로 전환합니다. 한 가지 옵션은 Bigquery 레거시 UDF입니다. Bigquery 레거시 UDF에는 행을 하나씩 처리한다는 제한이 있으므로이 옵션을 단계적으로 제거했습니다. 결과를 처리하려면 여러 행이 필요합니다.

두 번째 옵션은 스칼라 UDF입니다. 큰 조회 스. 라 UDF는 WEB UI 또는 명령 행에서만 호출 할 수 있으며 Java 클라이언트에서 트리거 할 수 없습니다.

아무도 모른다면 진행 방법을 문제의 방향을 알려주십시오.

답변

1

CREATE TEMPORARY FUNCTION 문이 요청의 query 속성으로 전달되는 한 모든 클라이언트 API의 표준 SQL로 스칼라 UDF를 사용할 수 있습니다. 예 :

QueryRequest queryRequest = 
    QueryRequest 
     .newBuilder(
      "CREATE TEMP FUNCTION GetWord() AS ('fire');\n" 
       + "SELECT COUNT(DISTINCT corpus) as works_with_fire\n" 
       + "FROM `bigquery-public-data.samples.shakespeare`\n" 
       + "WHERE word = GetWord();") 
     // Use standard SQL syntax for queries. 
     // See: https://cloud.google.com/bigquery/sql-reference/ 
     .setUseLegacySql(false) 
     .build(); 
QueryResponse response = bigquery.query(queryRequest); 
+0

Hi Elliot, 나는이 UDF를 위해 약 100 줄의 JS 코드를 가지고있다. 같은 방식으로 UDF를 작성해야합니까? –

+0

그래. 나머지 쿼리 텍스트와 함께 사용해야합니다. 또는 [GCS에서 라이브러리로] JavaScript 파일의 내용을로드 할 수 있습니다 (https://cloud.google.com/bigquery/docs/reference/standard-sql/user-defined-functions#including-external-libraries). –

1

빅 쿼리 스칼라 UDF는 웹 UI 또는 명령 줄에서 호출 할 수 있으며 자바 클라이언트의 트리거가 될 수 없습니다.

정확하지 않습니다.

https://cloud.google.com/bigquery/docs/reference/standard-sql/user-defined-functions

은 표준 SQL을 수 있도록이 문서를 참조하는 방법에 대한 자세한 내용은 : - 표준 SQL은 모든 응용 프로그램 및 모든 클라이언트에서 사용할 수 있습니다 CREATE TEMPORARY FUNCTION 문을 통해 스칼라 UDF를 지원 단순히 SQL 쿼리의 일부입니다 https://cloud.google.com/bigquery/docs/reference/standard-sql/enabling-standard-sql 특히 가장 간단한 것은 #standardSql 태그를 SQL 쿼리 시작 부분에 추가하는 것입니다.

+0

"UDF는 임시이므로 현재 쿼리 나 명령 줄 세션에서만 사용할 수 있습니다 .Updoc 편집기 탭을 웹에서 사용하지 마십시오. 표준 SQL 쿼리에 사용할 사용자 정의 함수를 만들 때의 UI UDF 편집기 탭은 레거시 SQL과 함께 사용됩니다. " –

+0

표준 SQL이 Java 클라이언트에서 스칼라 UDF를 지원하는 방법을 알려주십시오. –

+0

표준 SQL을 사용하는 방법을 설명하는 대답을 확장했습니다. CREATE TEMPORARY FUNCTION 절은이를 사용하는 모든 쿼리 앞에 추가되어야합니다. –

관련 문제