目录
开始sql之旅
对你的新数据探索技能的第一次测试使用的是描述芝加哥市犯罪的数据。
1、创建客户机对象检索信息
教程说,你很快就会看到这个客户机对象将在从BigQuery数据集中检索信息方面发挥中心作用。
反正我觉得挺迷的
client=bigquery.Client()
2、首先使用dataset()方法构造对dataset的引用。
dataset_ref = client.dataset("chicago_crime", project="bigquery-public-data")
3、接下来,我们使用get_dataset()方法以及刚才构造的引用来获取数据集
dataset = client.get_dataset(dataset_ref)
练习1:数一数数据集里表的个数
tables = list(client.list_tables(dataset))
print(len(tables))
这里可以看到是对dataset进行list_tables不出我所意料,但client.目前可以理解为客户机操作?然后又list了一次,很难理解,先背下来吧。在print那里又查了一下tables的长度,这里我猜不到tables是什么数据格式,有可能是tables接收了对dataset的list,所以现在tables里边应该是一个关于list的名称排列,我Print了一下tables,出现了这个,但是我看不懂,是一个对象吧。
[<google.cloud.bigquery.table.TableListItem object at 0x7f6d79d8c590>]
输出结果是1
练习2:探索表的概要
就是大致了解一下有多少行列,包含哪些信息,但是这个题问的是犯罪表中有多少列具有时间戳数据?时间戳不知道,百度一下
一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。
好像是用来标记上一次更新的时间
这一步我以为可以直接使用tables但是还是大意了,要重新引用和获取表
构造对“犯罪”表的引用
table_ref = dataset_ref.table("crime")
#API请求-获取表
table = client.get_table(table_ref)
#打印“芝加哥大学犯罪”数据集中“犯罪”表中所有列的信息
print(table.schema)
我是没看明白哪里有时间戳
练习3:创建一个犯罪地图
题目介绍:如果您想创建一个地图,在每个犯罪的位置都有一个点,那么您可能需要从犯罪表中提取两个字段的名称,以便在地图上绘制犯罪?
这是叫我检查列名(行名)吧,找出地点的所在
果然是list_rows,结果找出来的是经度纬度,也学到了大数据确定地点都用经纬度。
client.list_rows(table,max_results=5).to_dataframe()
用户操作.展示行(表,展示的行数).以数据框的形式展示吧
Select/From/Where简单查询
前提条件,我们只用一个数据集pet_records只有一个表叫做pets
这个网站的sql代码都一股python味,我怀疑这是不是在python的环境里
在教程里他告诉我们每个用户每个月只能扫描5TB的内容,但是我真不懂,谁能用上5TB呢?
我一下就想到了某互联网大厂jd,你相信数据的力量,亿量级产品数据,无疑是你的梦想乐园。
5TB肯定过亿了吧。
这个教程可能是对提取数据需要花费的算力非常在意,我在想在生产环境中应该也是这样吧,要控制资源的使用,不然成了黑客了,破坏系统。
查看所查询的数据字节
query = """
SELECT score, title
FROM `bigquery-public-data.hacker_news.full`
WHERE type = "job"
"""
dry_run_config = bigquery.QueryJobConfig(dry_run=True)
dry_run_query_job = client.query(query, job_config=dry_run_config)
print("This query will process {} bytes.".format(dry_run_query_job.total_bytes_processed)
限制所查询数据的大小
ONE_MB = 1000*1000
safe_config = bigquery.QueryJobConfig(maximum_bytes_billed=ONE_MB)
safe_query_job = client.query(query, job_config=safe_config)
safe_query_job.to_dataframe()
练习1:找出使用ppm这种计量单位的国家
这次的练习是关于空气质量
first_query = """
SELECT country
FROM `bigquery-public-data.openaq.global_air_quality`
WHERE unit = "ppm"
"""
练习2: select*查询所有字段
"""
SELECT *
FROM `bigquery-public-data.openaq.global_air_quality`
WHERE value = 0
"""