0

私はbqにまったく慣れていません。数学関数に関して、質問があります。A、B、Cの3列のtab1というテーブルがあるとします。Cの値をSUM(A + B)またはA*Bなどの行ごとに置き換えるクエリを作成したいと思います。つまり、1行目のA = 2、B = 3の場合、Cは5になり、2行目はA = 4、B = 3、C=7のようになります。各行に1つずつアクセスして、Cの値を手動で更新するのではなく、1つのクエリを作成することで、それが可能かどうか疑問に思っています。

のようなものを目指して

UPDATE tab1 SET C = A+B

OR

UPDATE tab1 SET C = SUM(A,B)

私は思考過程で正しいですか、それは可能ですか?

4

2 に答える 2

1

bigquery の利点の 1 つは、多くの場合、このような種類の計算を保存する必要がないことです。毎回計算するだけで済みます。BigQuery はクエリを並行して処理するため、クエリ時に複雑な計算を追加しても非常に効率的です。日付の解析、正規表現、三角関数などは、クエリをあまり遅くしません。

クエリをネストして、計算をよりクリーンにすることもできます。例えば

SELECT c, d FROM (
  SELECT (a + b) as c, (a * b) as d FROM dataaset.table
) WHERE c > 0 AND d % 10 == 3

明らかに、計算されたデータを本当に保存したい場合があるかもしれません。そのような場合には、Michael のソリューションが適しています。

于 2012-09-29T01:40:11.810 に答える
1

BigQuery テーブルは追加専用であるため、UPDATEクエリを実行できません。

ただし、次のようなクエリを実行できます。

SELECT
  mother_age, father_age, mother_age + father_age
AS age_sum
FROM
  [publicdata:samples.natality]
WHERE
  mother_age > 25 AND father_age > 25
LIMIT 50;

結果:

+------------+------------+---------+
| mother_age | father_age | age_sum |
+------------+------------+---------+
|         28 |         35 |      63 |
|         27 |         42 |      69 |
|         37 |         51 |      88 |
|         38 |         37 |      75 |
etc...

その結果を新しいテーブルに保存するか、CSV ファイルとして Google Cloud Storage にエクスポートします。

BigQuery テーブルへのデータの追加、または永続テーブルへのクエリ結果の保存についてお読みください。

于 2012-09-29T00:21:33.530 に答える