私は現在、Google Bigのクエリの行間のタイムスタンプの差を計算しようとしていますが、コードをテストするために使用しているサンプルテーブルがあります。グーグルビッグクエリの行の時間の違い
私は、これはより自然で分析関数を使用して表現、この質問JOIN
よりもむしろCalculate the time difference between of two rows
私は現在、Google Bigのクエリの行間のタイムスタンプの差を計算しようとしていますが、コードをテストするために使用しているサンプルテーブルがあります。グーグルビッグクエリの行の時間の違い
私は、これはより自然で分析関数を使用して表現、この質問JOIN
よりもむしろCalculate the time difference between of two rows
から参照このコード
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を有効にするには、[Show Options]の下の[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
句を使用することができます。あなたの特定のケースについては
は、おそらくのようなクエリを望みます。たとえば、次のように時間差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;
は、私はあなたの暗示に等しい何かをしようとした私のクエリではなく、私は、エラーを受信 - ミッシング関数を解析式で使用します。可能性についてあなたは正しいのですか? –
あなたが達成しようとしているものの例で、別の質問を作成してください。 –
私は行間に違いを得ようとしていますが、値は整数でありタイムスタンプではありません。 LAG関数は単独で問題なく動作します。しかし、あなたが示唆した減算をしようとすると、私は警告を受け取ります - アナリシス表現の機能がありません。異なる列と値で同じ質問です。 –