StoreView SQL,让数据分析不受地域限制

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
容器镜像服务 ACR,镜像仓库100个 不限时长
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 日志服务SLS是云原生观测与分析平台,支持Log、Metric、Trace等数据的大规模、低成本实时处理。为解决跨地域数据联合分析问题,SLS推出StoreView功能,可将多地域、多项目的Logstore组合成虚拟Logstore,简化查询分析流程。相比传统ETL方式,StoreView无需同步数据,减少存储成本和延迟,同时支持数据可见性控制、查询式ETL处理及异构数据Schema对齐等功能,提升跨域数据分析效率。通过__project__和__logstore__两个Meta字段,用户还能识别数据来源,实现精细化分析。

1.gif


1. 引言


日志服务 SLS 是云原生观测和分析平台,为 Log、Metric、Trace 等数据提供大规模、低成本、实时的平台化服务。SLS 提供了多地域支持【1】,方便用户可以根据数据源就近接入 SLS 服务,减少不必要网络延迟以及公网费用。然而,如果需要将不同地域的数据进行联合统筹分析时,该怎么办呢?


SLS 近期推出的 StoreView 功能,可以协助用户便捷地进行跨域、跨 project 的查询和统计分析。StoreView 允许将多个 project 下(支持跨域)的 logstore 数据组合成一个虚拟的 logstore 使用,用户可以像使用一个 logstore 那样,使用 StoreView 进行各种查询分析。


2. 数据准备


下面以 4 个 demo projects 对几个常遇到的场景进行说明,这 4 个 projects 来自不同的地域,信息如下:



其中,每个 project 都包含一个名为 user-queries 的 logstore,包含的核心字段如下:


字段名称

类型

含义
requestId 字符串

请求的唯一ID

status 整数

请求状态,200,400, 500等

latencyMs 整数 请求延迟
resultRows 整数 返回的结果行数
prcessedBytes 整数 处理的原始数据量(字节)
prcessedRows

整数

处理的原始数据量(行数)

query

字符串

SQL的具体内容


3. 如何进行全域分析?


3.1 主要问题


在支持 StoreView 之前,如果需要对多个地域的 logstore 数据进行整体分析,则需要通过 ETL 任务先将各个地域的 logstore 数据同步到中心化的 logstore下,即需要为上面 4 个 demo project 下的 logstore 按照如下步骤创建同步 logstore 数据的加工任务(具体参考数据加工概述【2】)。




所有加工任务创建成功后,就可以使用中心化的 logstore centralized-user-queries 进行统计分析了。



可以看到,上面的操作非常繁琐,需要为每个 logstore 创建加工任务。另外,这种方式会导致数据存储量放大,即每个 logstore 的存储量会增加一倍,而且还有公网流量,从而导致产生额外费用。因此,通过加工任务的方式将多个地域的数据同步到一个 project 下,不仅费时费力,还费钱。


3.2 现在的做法


鉴于通过 ETL 任务将多地域的数据同步到一个 project 下的缺点,SLS 推出了 StoreView 功能,允许将不同地域、不同 project 下的多个 logstore 进行组合,形成一个虚拟的 logstore。用户基于 StoreView 对跨域、跨 project 的多个 logstore 数据进行统筹分析下时,就像对单个 logstore 进行分析一样简单。进入任意一个 project,参考文档数据集(StoreView)概述【3】 ,创建如下 StoreView 定义。



创建好上面的 StoreView 定义后,就可以进入对应的查询分析页面进行操作了。通过下面 SQL 语句,可以在 StoreView 下实现和加工中心化 logstore 查询分析一样的效果。



可以看到,相比于为每个 logstore 创建加工任务,创建 StoreView 非常简单。同时,使用 StoreView 进行数据分析时,不会存在 ETL 任务同步数据延迟的问题,因为它是实时地读取底层每个 logstore 的数据。


4. StoreView SPL 特性


StoreView 除了能够高效地解决数据因地域隔离导致查询分析不方便的问题外,它还集成了 SPL 句法加工数据的能力(参看 SPL 句法【4】,当前 StoreView 仅支持 extend、project 以及 where 三种指令)。基于 SPL 丰富的函数以及算子,StoreView 可以实现诸多 logstore 本身不具备的能力,下面将从数据可见性控制查询式 ETL 处理以及异构数据 schema 对齐等方面展开介绍。


4.1 数据可见性控制


对于 logstore 中的数据,有时我们想控制数据行级别的可见性,比如对于运维人员,我们想让他们只有权限看到报错的 queries 信息(方便他们监控系统的异常情况),但无权限查看正常的 queries。对于普通 logstore 而言,目前无法做到行级别的可见性控制(当前授权仅支持以 logstore 为粒度),但采用 StoreView 后,却非常容易实现这一点,比如我们可以创建如下图所示的 StoreView。



上面的 StoreView 中额外定义了一个查询过滤,它限定了返回没有匹配 status 为 200 的数据。通过下的 SQL 结果,可以清楚地看到,从 failed_user_queries 这个 StoreView 中只能看到错误的 queries 统计结果,而成功 queries(status 为 200)全部被过滤掉了。



因此,如果有行级别的数据可见性管理需求,StoreView 正好可以派上用场。


4.2 查询式 ETL 处理


有时候,logstore 中可能会包含一些敏感信息,我们并不想让团队中普通组员看到(但允许他们查看其他非敏感的字段信息)。比如,对于 user-queries 这个 logstore,我不想让所有人看到 sourceIp 以及 userId 这两个用户敏感信息,那该怎么处理呢?



按照之前的做法,可以通过数据加工任务对原始的 logstore 数据进行脱敏后,保存到另外一个 logstore 中,然后再将这个新的 logstore 开放给普通成员。虽然这样操作也能满足需求,但这不仅操作复杂,而且会增加额外的存储成本。基于 StoreView 的 SPL 能力,很容易满足这个需求,我们可以创建如下一个 StoreView。



通过下面的执行结果可以看到,无论是查询还是 SQL 分析,都看不到 sourceIp 和 userId 的原始内容。




可以看到,通过 StoreView 集成的 SPL 能力,可以非常便捷地对原始数据进行各种加工处理。相对于传统的 ETL 加工任务,StoreView SPL 定义更新更为灵活,修改后立刻对查询分析可见,而加工任务更新后,仅仅会作用于新写入源 logstore 中的数据。


4.3 异构数据 schema 对齐


在 SQL 场景下,StoreView 这个虚拟表支持的字段是所有底层 logstore 开启了统计分析字段的超集。对于多个 logstore 中同名但类型不同的分析字段,会归一化到 varchar 类型。但对于名称不同、含义相同的字段,怎么进行统一分析呢?比如,下面的场景中,统计每个 project 下 query 的平均延迟,结果发现 sls-cn-guangzhou-queries 对应的结果为 null,这是为什么呢?



经过分析发现,原来 sls-cn-guangzhou-queries 中的 query 数据并不包含 latencyMs 这个字段,它的数据中对应的字段名称实际上为 latency。针对这种情况,我们仍然可以通过 SPL 的 extend 算子解决这种问题,即为 latency 字段增加一个 alias 字段(当前 SPL 会默认将所有字段作为 varchar 处理,下面 SPL 中进行了类型转换)。



经过上面的操作后,SQL 的执行结果就符合预期了,具体如下所示。



5. StoreView meta 字段


StoreView SQL 提供了 __project__ 以及 __logstore__ 两个 meta 字段,它们分别表示数据原始所对应的 project 以及 logstore 名称。用户可以基于这两个 meta 字段来识别 StoreView 中结果的来源。比如,我们可以通过以下 SQL 来对比分析每个 project 下一天的处理数据量。



6. 结语


通过上面的实例分析可以看到,SLS StoreView 功能为用户提供了极为便捷的跨 project 查询和分析能力,用户不再需要通过创建加工任务来汇聚数据,节省了用户的使用成本。当前,控制台直接 SQL 分析以及大盘展示已经支持 StoreView(告警目前还不支持,后续也会考虑放开)。当然,因为跨 project 进行查询和分析,会涉及到跨域读取数据,整个处理链路受网络影响可能较大。后期我们会不断完善 StoreView 的易用性、稳定性和性能,让用户基于 StoreView 就能轻松愉悦地查询分析全地域的数据,真正做到数据分析不受地域边界的限制。


【1】多地域支持


【2】数据加工概述


【3】数据集(StoreView)概述


【4】SPL 句法


点击阅读原文,体验日志服务 SLS StoreView 功能


阅读原文:链接

相关文章
|
SQL 分布式计算 数据可视化
Spark SQL案例【电商购买数据分析】
Spark SQL案例【电商购买数据分析】
|
24天前
|
SQL 自然语言处理 数据可视化
狂揽20.2k星!还在傻傻的写SQL吗,那你就完了!这款开源项目,让数据分析像聊天一样简单?再见吧SQL
PandasAI是由Sinaptik AI团队打造的开源项目,旨在通过自然语言处理技术简化数据分析流程。用户只需用自然语言提问,即可快速生成可视化图表和分析结果,大幅降低数据分析门槛。该项目支持多种数据源连接、智能图表生成、企业级安全防护等功能,适用于市场分析、财务管理、产品决策等多个场景。上线两年已获20.2k GitHub星标,采用MIT开源协议,项目地址为https://github.com/sinaptik-ai/pandas-ai。
|
4月前
|
SQL 数据可视化 IDE
SQL做数据分析的困境,查询语言无法回答的真相
SQL 在简单数据分析任务中表现良好,但面对复杂需求时显得力不从心。例如,统计新用户第二天的留存率或连续活跃用户的计算,SQL 需要嵌套子查询和复杂关联,代码冗长难懂。Python 虽更灵活,但仍需变通思路,复杂度较高。相比之下,SPL(Structured Process Language)语法简洁、支持有序计算和分组子集保留,具备强大的交互性和调试功能,适合处理复杂的深度数据分析任务。SPL 已开源免费,是数据分析师的更好选择。
|
6月前
|
SQL 数据挖掘 数据库
这可能是最适合解决 SQL 数据分析痛点的编程语言
数据分析师常需处理各种数据操作,如过滤、分组、汇总等,SQL 在这些基本需求上表现得心应手。然而,面对本地文件数据或更复杂需求时,SQL 的局限性显现。SPL(Structured Process Language)则提供了更灵活的解决方案,无需数据库环境,直接从文件计算,代码简洁易懂,调试工具强大,极大提升了数据分析的效率和交互性。
|
10月前
|
SQL 数据挖掘
7张图总结:SQL 数据分析常用语句!
7张图总结:SQL 数据分析常用语句!
141 8
|
10月前
|
SQL 数据挖掘 关系型数据库
SQL中的聚合函数:数据分析的强大工具
【8月更文挑战第31天】
344 0
|
10月前
|
SQL 数据挖掘 Serverless
SQL 窗口函数简直太厉害啦!复杂数据分析的超强利器,带你轻松攻克数据难题,快来一探究竟!
【8月更文挑战第31天】在数据驱动时代,高效处理和分析大量数据至关重要。SQL窗口函数可对一组行操作并返回结果集,无需分组即可保留原始行信息。本文将介绍窗口函数的分类、应用场景及最佳实践,助您掌握这一强大工具。例如,在销售数据分析中,可使用窗口函数计算累计销售额和移动平均销售额,更好地理解业务趋势。
212 0
|
10月前
|
SQL 数据可视化 数据挖掘
SQL 在数据分析中简直太牛啦!从数据提取到可视化,带你领略强大数据库语言的神奇魅力!
【8月更文挑战第31天】在数据驱动时代,SQL(Structured Query Language)作为强大的数据库查询语言,在数据分析中扮演着关键角色。它不仅能够高效准确地提取所需数据,还能通过丰富的函数和操作符对数据进行清洗与转换,确保其适用于进一步分析。借助 SQL 的聚合、分组及排序功能,用户可以从多角度深入分析数据,为企业决策提供有力支持。尽管 SQL 本身不支持数据可视化,但其查询结果可轻松导出至 Excel、Python、R 等工具中进行可视化处理,帮助用户更直观地理解数据。掌握 SQL 可显著提升数据分析效率,助力挖掘数据价值。
355 0
|
SQL 分布式计算 数据挖掘
Spark_Day07:Spark SQL(DataFrame是什么和数据分析(案例讲解))
Spark_Day07:Spark SQL(DataFrame是什么和数据分析(案例讲解))
268 0
|
SQL 数据挖掘 HIVE
【Hive SQL 每日一题】在线课程学生行为数据分析
该数据分析师任务是分析在线学习平台的学生行为,以优化课程内容和学习体验。提供的数据包括`students`表(含学生ID、姓名、年龄和性别)和`course_activity`表(含活动ID、学生ID、课程ID、活动日期和学习时长)。分析涉及:1) 学生参加的课程数量,2) 课程总学习时长,3) 按性别分组的平均学习时长,4) 学生首次参加的课程及日期,5) 学生最近一次学习的时长,以及6) 参与学生最多的课程。所有查询都使用了SQL,部分涉及窗口函数和分组统计。数据集可在给定链接下载。
114 2