小编Yun*_*ang的帖子

Bigquery:如果不存在则创建表并使用 Python 和 Apache AirFlow 加载数据

首先,我使用 MySQL 查询从生产数据库中获取所有数据,然后将该数据NEW LINE DELIMITED JSON存储在谷歌云存储中,我想要做的是:
1. 检查表是否存在
2. 如果表不存在,使用创建表自动检测模式
3. 存储数据

所有这些都将在气流中进行安排。真正让我困惑的是数字2,我如何在 Python 中做到这一点?或者气流可以自动执行此操作吗?

python mysql json google-bigquery airflow

8
推荐指数
2
解决办法
4500
查看次数

在 BigQuery 中将 UNIX 时间 (INT) 转换为时间戳

我在 BigQuery 表中有一个“date_time”列,它包含像“1569888224”这样的 unix 时间戳值。问题是这些值是整数数据类型,而不是时间戳数据类型,所以我似乎没有一种简单的方法将它们转换为人类可读的日期/时间。有没有人有将这些整数转换为 BigQuery 中的日期时间值的好方法?

谢谢!

epoch unix-timestamp datetime-conversion google-bigquery

7
推荐指数
2
解决办法
1万
查看次数

BigQuery:从 Group By 中的不同组返回第一个值

我目前在使用标准 SQL 查询时遇到问题。我有一个电子邮件列表,其中每封电子邮件都可以具有多种功能。请参阅下面的示例,了解表格的外观。

Email                         Function
peter@gmail.com               engineer
peter@gmail.com               specialist
dave@gmail.com                analyst
dave@gmail.com                tester
dave@gmail.com                manager
michael@gmail.com             intern
Run Code Online (Sandbox Code Playgroud)

我想要的是一个查询,它使用它找到的第一个函数返回每封电子邮件一次。所以上表应该返回以下内容:

Email                         Function
peter@gmail.com               engineer
dave@gmail.com                analyst
michael@gmail.com             intern
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

我现在拥有的是查询的简化版本。

SELECT Email, Function
FROM database
GROUP BY Email, Function
Run Code Online (Sandbox Code Playgroud)

问题是我必须将电子邮件和函数都放在 GROUP BY 中。如果我只将 Email 放在 Group By 中,即使我只希望查询 GROUP BY Email,查询也无法运行。

谢谢!

sql standards google-bigquery

5
推荐指数
3
解决办法
6683
查看次数

When I query a partitioned table, is it possible to filter by partition column with a subquery and reduce cost at the same time?

I can see from public documentation that BigQuery partition table has this limitation that if the partition column has a subquery as a filter, it won't prune the queried partition and reduce "bytes processed"(cost). I'm wondering if there is a way to workaround.

For example, this query will scan 38.67 GB, is there a way to reduce it?

WITH sub_query_that_generates_filter AS (
  SELECT DATE "2016-10-01" as month UNION ALL
  SELECT "2017-10-01" UNION ALL
  SELECT "2018-10-01"
)
SELECT block_hash, fee FROM …
Run Code Online (Sandbox Code Playgroud)

google-bigquery

5
推荐指数
1
解决办法
85
查看次数

使用 BigQuery 进行 SELECT INTO

MySQL/Oracle/Teradata 必须SELECT ... INTO FROM ...从表中获取值并将其分配给变量。如何使用 BigQuery 执行此操作?

SELECT 
    c1, c2, c3, ...
INTO 
    @v1, @v2, @v3,...
FROM 
    table_name
WHERE 
    condition;
Run Code Online (Sandbox Code Playgroud)

sql google-bigquery

5
推荐指数
1
解决办法
2万
查看次数