练习 - 使用 project 运算符选择要返回的列
可以使用 Kusto 查询来筛选数据并返回特定信息。
回想一下,你已查看了任意行的数据以了解数据结构。 本单元将介绍如何选择与风暴类型、位置及其破坏性影响相关的特定数据列。
使用 project
运算符
请记住,气象数据示例包含很多列。 并非所有这些列都对此次探索有意义。 你将仅选择几个要查看的列。 你将使用 project
运算符来定义想要在输出中查看的列。 列名用逗号隔开。
运行以下查询。 此查询在
project
运算符中命名要返回的列及其顺序。StormEvents | project EventType, State, DamageProperty, DamageCrops, InjuriesDirect, InjuriesIndirect | take 10
应获得如下图所示的结果:
请注意,输出中只显示
project
运算符中提到的列。
使用 project
重命名和定义新列
为了解美国各州风暴的影响,你需要获得总受伤人数和总损失数额。 可以使用 project
运算符对不同列中的整数值求和,并在新列中返回结果。 还可以重命名列,使其对分析更有意义。
例如,其他国家/地区也有州行政单位。 将州列重命名可能会有所帮助,这样就可以清楚地显示结果是针对美国各州的。 让我们看看如何更改以前的查询,以便获取美国各州的总受伤人数和损失数额。
更新上一个查询,创建新列来显示“InjuriesDirect”和“InjuriesIndirect”的总和:
Injuries=InjuriesDirect+InjuriesIndirect
对这两种类型的损失列都执行相同操作,将农作物损失和财产损失加在一起:
Damage=DamageCrops+DamageProperty
将鼠标悬停在查询编辑器中的列名上,以查看列中包含的数据类型。 可以使用数值运算符来添加值,因为这些列的类型为
int
(整数)。将“State”列重命名为“US_State”:
US_State=State
查看更新的查询并运行它。 完整查询包括受伤人数计算、损失计算,并且重命名了“State”列。
StormEvents | project US_State=State, EventType, Injuries=InjuriesDirect+InjuriesIndirect, Damage=DamageCrops+DamageProperty | take 10
应获得如下图所示的结果:
请注意,“State”列已重命名为“US_State”。 “Injuries”(受伤)列是新添加的,通过将“InjuriesDirect”和“InjuriesIndirect”求和进行计算。 “Damage”(损失)列也是新添加的,通过将“DamageCrops”和“DamageProperty”求和进行计算。
使用 project-away
运算符
如果想删除几个所选列,该如何操作? 对于本次探索,你从未用到分配到每个时段和事件的 ID。 可使用 project-away
运算符删除特定列,该运算符指示要删除的列,同时保留所有剩余列。 还可使用通配符(如 | project-away *Id
)删除以“ID”结尾的所有列。
运行以下查询:
StormEvents | project-away EpisodeId, EventId | take 10
检查结果。 请记住,“EpisodeId”和“EventId”列之前在“EndTime”和“State”列之间。 你在输出中看到了其中的哪些列?