云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

阿里云_马云要收购华为_新注册优惠

小七 141 0

4个SQL高阶和Lambda函数,用于检查数据库中的复杂和结构化数据

在数据库上试试这个笔记本几周前,我们发布了一个简短的博客和一个附带的教程笔记本,演示了如何使用五个sparksql实用程序函数从物联网设备中探索和提取结构化和嵌套的数据。为了保持相同的主题,我想展示如何广泛使用SQL中作为Databricks运行时beta3.0的一部分引入的四个高阶函数。知道原因能提供洞察力,但不能让你有效率。知道怎么做。虽然我们的深入博客解释了为什么处理复杂数据类型(如具有高阶函数的数组)在SQL中很重要的概念和动机,但本博客是如何作为笔记本教程使用SQL中的高阶函数处理物联网设备事件中的结构化数据和数组的序言。特别是,如果你喜欢函数式编程,你可以很好地利用它们。更重要的是,这些高阶函数提供了三个好处。例如,您不需要:将数组解压成单独的行,然后应用函数并重新打包;依赖于有限的内置功能;以及用Scala或Python编写udf。所有这些都可以在SQL中完成。在本教程中,我们将探讨四个SQL函数,以及如何使用它们来处理数组类型:转换()过滤器()存在()聚合()同样,与上一篇教程一样,本教程的要点很简单:使用sparksql实用程序函数对嵌套的JSON结构进行切分有多种方法,即前面提到的列表。这些专用的高阶函数主要适用于在SQL中操作数组,这使得代码更易于编写,并且在使用数组或嵌套数组处理表值时表达更简洁。为了让您一瞥,请考虑这个嵌套模式,该模式定义了从Apache-Kafka流下来或存放在您选择的数据源中的IoT事件的样子。从pyspark.sql.functions进口*从pyspark.sql.types进口*架构=结构类型()\.add("dc_id",StringType())\.add("源",映射类型(StringType(),StructType()\.add("说明",StringType())\.add("ip",StringType())\.add("id",IntegerType())\.add("temp",ArrayType(IntegerType()))\.add("c02_level",ArrayType(IntegerType()))\.add("geo",结构类型()\.add("lat",DoubleType())\.add("long",DoubleType()))其对应的示例数据帧/数据集数据可能如下所示:dataDF=jsonToDataFrame(""{"dc_id":"dc-101","来源":{"传感器igauge":{"身份证":10,"ip":"68.28.91.22","description":"连接到容器天花板上的传感器","温度":[35,35,35,36,35,35,32,35,30,35,32,35],"二氧化碳水平":[147514751473],"地理":{"纬度":38.00,"长":97.00}},"传感器ipad":{"身份证":13,"ip":"67.185.72.1","description":"连接碳气瓶的传感器ipad","温度":[45,45,45,46,45,45,42,35,40,45,42,45],"二氧化碳水平":[137013701372],"geo":{"lat":47.41,"long":-122.00}},"sensor inest":{"身份证":8,"ip":"208.109.163.218","description":"附着在工厂天花板上的传感器","温度":[40,40,40,40,40,43,42,40,40,45,42,45],"1346,346"级,"geo":{"lat":33.61,"long":-111.89}},"传感器istick":{"身份证":5,"ip":"204.116.105.67","description":"嵌入天花板排气管的传感器","温度":[30,30,30,30,40,43,42,40,40,35,42,35],"二氧化碳水平":[15741701576],"geo":{"lat":35.93,"long":-85.46}}}}""架构)如果您在Python笔记本中检查相应的模式,您将看到嵌套结构:temp和c02级别的整数数组。根|--dc_id:string(可空=true)|--来源:映射(可为null=true)||——键:字符串||——值:struct(valuecontainsAll=true)|| |——描述:字符串(可为null=true)|| |——ip:string(可为null=true)|| |——id:integer(可空=true)|| |——temp:array(可空=true)|| | |——元素:整数(containsAll=true)|| |——c02_级别:数组(可为null=true)|| | |——元素:整数(containsAll=true)|| |——geo:struct(可空=true)|| | |——纬度:双精度(可为空=真)|| | |——long:double(可空=真)我使用IoT设备的这些JSON事件数据示例来说明如何使用这些SQL函数。我不想在这里重复我已经在笔记本中演示过的内容,而是鼓励您探索一下随附的笔记本,将其导入到您的Databricks工作区,并尝试一下。下一步是什么请尝试附带的关于数据块的教程。如果您还没有阅读我们之前的相关博客及其sparksql实用程序函数教程,请务必阅读它们。另外,如果你没有Databricks帐户,今天就去买一个。免费试用Databricks。今天就开始吧