2016-09-14 3 views

답변

2

에서 참조 된이 코드

SELECT 
    A.row, 
    A.issue.updated_at, 
(B.issue.updated_at - A.issue.updated_at) AS timedifference 
FROM [icxmedia-servers:icx_metrics.gh_zh_data_production] A 
INNER JOIN [icxmedia-servers:icx_metrics.gh_zh_data_production] B 
    ON B.row = (A.row + 1) 
WHERE issue.number==6 and issue.name=="archer" 
ORDER BY A.requestid ASC 

을 사용하고 있습니다. analytic functions with standard SQL in BigQuery에 대한 설명서는 분석 함수의 작동 방식과 구문에 대해 설명합니다. 당신이 순서 열 y에 의해 결정된다 x 값의 연속적인 차이를 가져 가고 싶어하는 경우 예를 들어, 당신은 할 수 : BigQuery에서이를 실행하는

WITH T AS (
    SELECT 
    x, 
    y 
    FROM UNNEST([9, 3, 4, 7]) AS x WITH OFFSET y) 
SELECT 
    x, 
    x - LAG(x) OVER (ORDER BY y) AS x_diff 
FROM T; 

주, 당신은 "사용하여 기존의 선택을 취소합니다 표준 SQL을 사용하려면 "옵션 표시"아래의 "SQL"상자를 클릭하십시오. WITH T 절은 예제에 대한 일부 데이터를 설정하기 만하면됩니다.

SELECT 
    row, 
    issue.updated_at, 
    issue.updated_at - LAG(issue.updated_at) OVER (ORDER BY issue.updated_at) AS timedifference 
FROM `icxmedia-servers.icx_metrics.gh_zh_data_production` 
WHERE issue.number = 6 
    AND issue.name = "archer" 
ORDER BY requestid ASC; 

당신은 단지 하나의 문제 번호의 updated_at 외부의 차이를 확인하려면, 당신은뿐만 아니라 PARTITION BY 절을 사용할 수 있습니다 특정 사례를 들어

, 당신은 아마 같은 쿼리를 원하는 것입니다. 예를 들어 : timedifference AS LAG (issue.updated_at) OVER (issue.updated_at BY ORDER) - - - issue.updated_at

SELECT 
    row, 
    issue.name, 
    issue.number, 
    issue.updated_at, 
    issue.updated_at - LAG(issue.updated_at) OVER (
     PARTITION BY issue.number 
     ORDER BY issue.updated_at) AS timedifference 
FROM `icxmedia-servers.icx_metrics.gh_zh_data_production` 
ORDER BY requestid ASC; 
+0

나는 당신의 sugestion와 같은 뭔가를 시도 내 쿼리하지만 오류가 발생 - 없음 함수를 사용합니다. 그럴 가능성이 있니? –

+0

성취하려는 것을 보여주기 위해 별도의 질문을하십시오. –

+0

난 행 사이의 차이를 얻으려고하지만 값은 정수가 아닌 타임 스탬프입니다. LAG 기능은 잘 작동합니다. 그러나 당신이 제안한 뺄셈을하려고하면 경고 메시지가 나타납니다 - 분석 표현식에 누락 된 기능. 서로 다른 열과 값으로 동일한 질문입니다. –