华为云用户手册

  • 产品功能 支持自动化编排资源 AOS提供自动化的编排能力,支持编排华为云主流云服务,具体请参见支持编排的云服务。AOS还提供资源规划、应用设计、部署、变更等生命周期管理等相关服务,通过自动化降低运维成本。 支持应用与云服务资源混合编排 您可通过标准语言(YAML/JSON)统一描述所需基础资源、应用系统、应用上层配套服务及三者之间的关系。根据统一描述,可一键式按照定义的依赖顺序,自动完成资源开通、应用部署、应用服务加载。对于部署的资源和应用,可以统一的进行管理:删除、扩缩容、复制、迁移等。
  • 应用上云 应用场景: 应用上云时,很多工作需要重复操作,例如环境的销毁和重建、在扩容的场景下重复完成多个新实例的配置等。同时应用上云时,很多操作非常耗时,例如创建数据库、创建虚拟机等,都需等待分钟级别的时间。一旦需要串行创建多个耗时任务,就需要您持续等待一段时间。而此时如果可以将整个流程自动化,可以减少您的等待过程,完成其他更有价值的任务。 价值: 使用应用编排服务,通过模板对应用及应用所需资源进行统一描述,一键式自动完成部署或销毁操作。您可以同步进行资源规划、应用定义和业务部署,提升应用上云的效率。 优势: 简单易用 通过编写模板,即可完成应用设计与资源的规划,使业务的组织和管理变得轻松。 高效执行 一键式自动完成部署或销毁操作,省去繁琐的人工操作。 快速复制 同一模板可以多次重复使用,自动化构建相同的应用与资源到不同的数据中心。 图1 应用上云场景
  • ISV业务发放 应用场景: 独立软件开发商(ISV)需要让客户快速将软件服务部署到云上,供其自身的客户进行使用。ISV传统的软件发放的方式是在其官网提供软件的代码下载及平台搭建指南。但该方式需要客户自建资源与组网,准备时间长,成本高。并且安装过程完全手动,耗时易出错,软件的版本更新都需要客户自己手动操作,运维压力大。 价值: 应用编排服务的模板提供了标准化的资源和应用交付方式。ISV可以通过将软件服务模板化,通过应用编排服务的一键部署能力,对自身客户进行业务发放。 优势: 快速发放 通过模板,自动化完成软件的部署与资源的开通,用户只需一键部署,分钟级完成。 准确创建 ISV软件本身及所需的云服务资源都通过模板固化,减少人工失误带来的影响。 统一维护 软件的生命周期管理可以统一通过AOS服务实现,一键完成软件的升级、伸缩等操作。 图2 ISV业务发放场景
  • 批量创建 应用场景: 如果您需要创建一个包含10个不同规格的弹性云服务器实例的Web应用,或者您需要一次创建10个数据库实例时,您需要一个个单独创建这些资源,然后必须将这些资源配置为结合使用,才能确保应用顺利启动,增加了使用云资源的复杂性和时间成本。 价值: 应用编排服务将大批量的、不同服务、不同规格的资源实例,统一定义在模板中,一键完成创建,实现资源的快速部署和灵活配置。 优势: 快速部署 通过应用编排服务自动化并发创建多个云服务资源,或不同规格的同一服务资源。 灵活配置 丰富的模板语法,支持根据不同场景灵活配置创建资源的种类与规格。 自动回退 批量创建过程中如果失败,用户可选择自动回退,以节省资源成本。 图3 批量创建场景
  • 责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的云安全挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 安全性是华为云与您的共同责任,如图1所示。 华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的 IaaS、PaaS 和 SaaS 各类各项云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。 租户:负责云服务内部的安全,安全地使用云。 华为云租户的安全责任在于对使用的 IaaS、PaaS 和 SaaS 类各项云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、虚拟主机和访客虚拟机的操作系统,虚拟防火墙、API 网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。 《华为云安全白皮书》详细介绍华为云安全性的构建思路与措施,包括云安全战略、责任共担模型、合规与隐私、安全组织与人员、基础设施安全、租户服务与租户安全、工程安全、运维运营安全、生态安全。 图1 华为云安全责任共担模型 父主题: 安全
  • 简单易用的编排语言 AOS编排语言支持 YAML和JSON 语法来定义需要的元素。 AOS编排语言支持参数化,您只需更改输入参数,即可控制要部署对象的规格、实例数量以及执行的操作,从而实现模板的重复利用。 AOS编排语言支持变量引用,包括引用输入参数、引用元素属性和引用映射表。 引用输入参数:获取模板文件中inputs区域中定义的输入参数的值。 引用元素属性:获取模板中定义的其他元素初始化后的结果。例如新建了一个虚拟私有云,再新建弹性云服务器时,可使用已新建的虚拟私有云ID。该方法可用于构建资源间依赖关系并控制资源的创建顺序。 引用映射表:用于获取映射表中的内容。
  • 应用上云 场景描述 应用上云时,很多工作需要手工重复操作,例如环境的销毁和重建、在扩容的场景下重复完成多个新实例的配置等,手工操作容易带来操作失误。 同时应用上云时,很多操作非常耗时,例如创建数据库、创建虚拟机等,手动操作容易失误 ,串行创建多个任务,就需要您持续等待较长时间。 解决方案 资源编排就是将上述场景的工作进行工具化、流程化。资源编排采用模板对应用所需资源进行统一描述;资源栈管理功能提供众多资源自动化部署或销毁操作。资源编排可以将大批量、不同服务、不同规格的资源实例,统一定义在模板中。完成自动化创建,实现资源的快速部署和灵活配置。 收益优势 简单易用 通过编写模板,即可完成应用设计与资源的规划,使业务的组织和管理变得轻松。 高效执行 向导式自动完成部署或销毁操作,省去繁琐的人工操作,减少了人为操作的失误 。 快速复制 同一模板可以多次重复使用,自动化构建相同的应用与资源到不同的数据中心。提升了您的工作效率。
  • ISV资源发放 场景描述 独立软件开发商(ISV)需要快速将软件所需资源部署到云上,供其众多的客户进行使用。传统的软件发放的方式是在其官网提供软件的代码下载及平台搭建指南。但该方式需要ISV自行组网、交付资源、部署软件,准备时间长,成本高。 解决方案 资源编排提供了标准化的资源和应用交付方式。ISV可以通过将软件服务模板化。通过资源编排的资源栈部署能力,对自身客户进行快速业务发放,将交付过程流程化。资源编排使用代码形式模板描述整个交付环境,也便于ISV将交付与CI/CD流程集成。 收益优势: 交付标准化 通过模板、资源栈方式将软件交付过程标准化,便于总结成最佳实践以便推广。 提升效率 通过模板,自动化完成资源的开通,ISV只需部署资源栈,即可完成业务的交付;提升了ISV的交付效率。 准确创建 ISV的软件本身及所需的云服务资源都通过模板固化,减少人工失误带来的影响。 CI/CD集成 可以将资源编排集成到现有工具链中,提升自动化程度。 图2 ISV资源发放场景
  • 审计与日志 审计 云审计服务(Cloud Trace Service,CTS),是华为云安全解决方案中专业的日志审计服务,提供对各种云资源操作记录的收集、存储和查询功能,可用于支撑安全分析、合规审计、资源跟踪和问题定位等常见应用场景。 AOS支持审计的操作事件,请参见云审计服务支持的AOS操作列表。 日志 用户开通云审计服务并创建和配置追踪器后,CTS可记录与AOS相关的操作事件,方便您进行事后审计。您可以在CTS控制台,事件列表菜单中,搜索AOS的事件来源,即可查看所有AOS相关的审计日志。 审计日志查看方法,请参见查看云审计日志。 父主题: 安全
  • 支持Provider版本列表 支持Provider版本列表 Provider是将各类资源的API(比如资源的CRUD操作API)封装而成的插件,供资源编排引擎调用。资源编排支持Provider类型与版本如下表。 类型 版本 terraform-provider-huaweicloud 1.40.2 1.40.1 1.40.0 1.39.0 1.38.2 1.38.1 terraform-provider-kubernetes 2.5.0 父主题: 资源编排
  • URI URI格式 GET /v3/{project_id}/instances/{instance_id}/major-version/inspection-histories?offset={offset}&limit={limit}&order={order}&sort_field={sort_field}&target_version={target_version}&is_available={is_available} 参数说明 表1 参数说明 名称 参数类型 是否必选 说明 project_id String 是 租户在某一region下的project ID。 获取方法请参见获取项目ID。 instance_id String 是 实例ID。 offset Integer 否 索引位置,偏移量。从第一条数据偏移offset条数据后开始查询,默认为0(偏移0条数据,表示从第一条数据开始查询),必须为数字,不能为负数。 limit Integer 否 查询记录数。默认为10,不能为负数,最小值为1,最大值为100。 order String 否 排序方式。 DESC:降序。 ASC:升序。 默认为降序。 sort_field String 否 排序字段。 check_time:检查时间。 expiration_time:过期时间。 默认为检查时间。 target_version String 否 目标版本。 is_available Boolean 否 是否有效。 true:表示有效。 false:表示无效。
  • 响应消息 正常响应要素说明 表2 参数说明 名称 参数类型 说明 total_count Integer 总记录数。 inspection_reports Array of objects 检查报告信息。 详情请参见表3。 表3 inspection_report字段数据结构说明 名称 参数类型 说明 id String 检查报告ID。 check_time String 检查时间,格式为“yyyy-mm-ddThh:mm:ssZ”。 其中,T指某个时间的开始;Z指时区偏移量,例如偏移1个小时显示为+0100。 expiration_time String 到期时间,格式为“yyyy-mm-ddThh:mm:ssZ”。 其中,T指某个时间的开始;Z指时区偏移量,例如偏移1个小时显示为+0100。 target_version String 目标版本。 result String 检查结果。 success:表示成功。 failed:表示失败。 running:表示检查中。 detail String 检查报告详情。 正常响应样例 { "total_count": 1, "inspection_reports": [ { "id": "289903e1-3006-19e9-e054-5fb7fe376552", "check_time": "2023-03-06T02:33:49+0800", "expiration_time": "2023-03-07T02:33:49+0800", "target_version": "14.4", "result": "success", "detail": "2023-03-06 18:33:26 --- pg_upgrade check task begin\n2023-03-06 18:34:40 --- pg_upgrade check on master: [user_check_report]User check success" } ] } 异常响应 请参见异常请求结果。
  • URI URI格式 GET /v3/{project_id}/instances/{instance_id}/major-version/upgrade-histories?offset={offset}&limit={limit}&order={order}&sort_field={sort_field} 参数说明 表1 参数说明 名称 参数类型 是否必选 说明 project_id String 是 租户在某一region下的project ID。 获取方法请参见获取项目ID。 instance_id String 是 实例ID。 offset Integer 否 索引位置,偏移量。从第一条数据偏移offset条数据后开始查询,默认为0(偏移0条数据,表示从第一条数据开始查询),必须为数字,不能为负数。 limit Integer 否 查询记录数。默认为10,不能为负数,最小值为1,最大值为100。 order String 否 排序方式。 DESC:降序。 ASC:升序。 默认为降序。 sort_field String 否 排序字段。 start_time:开始时间。 end_time:结束时间。 默认为开始时间。
  • 响应消息 正常响应要素说明 表2 参数说明 名称 参数类型 说明 total_count Integer 总记录数。 upgrade_reports Array of objects 升级报告信息。 详情请参见表3。 表3 upgrade_report字段数据结构说明 名称 参数类型 说明 id String 升级报告ID。 start_time String 升级开始时间,格式为“yyyy-mm-ddThh:mm:ssZ”。 其中,T指某个时间的开始;Z指时区偏移量,例如偏移1个小时显示为+0100。 end_time String 升级结束时间,格式为“yyyy-mm-ddThh:mm:ssZ”。 其中,T指某个时间的开始;Z指时区偏移量,例如偏移1个小时显示为+0100。 src_instance_id String 原实例ID。 src_database_version String 原数据库版本。 dst_instance_id String 目标实例ID。 dst_database_version String 目标数据库版本。 result String 升级结果。 success:表示成功。 failed:表示失败。 running:表示升级中。 is_private_ip_changed Boolean 是否将实例内网IP切换到目标大版本实例。 true:表示切换。 false:表示不切换。 private_ip_change_time String 实例内网IP修改时间,格式为“yyyy-mm-ddThh:mm:ssZ”。 其中,T指某个时间的开始;Z指时区偏移量,例如偏移1个小时显示为+0100。 statistics_collection_mode String 统计信息收集模式。 before_change_private_ip:修改实例内网IP前收集。 after_change_private_ip:修改实例内网IP后收集。 detail String 升级报告详情。 正常响应样例 { "total_count": 1, "upgrade_reports": [ { "id": "1a8fda5a-17a6-ebc4-bf1f-97ae837f432b", "start_time": "2023-03-06T02:45:49+0800", "end_time": "2023-03-06T02:50:49+0800", "src_instance_id": "dccacebb7b884ee18bc5c02c918ef2b0in03", "src_database_version": "13.9", "dst_instance_id": "6b5750504be1403191c4f00e4ffaee5ein03", "dst_database_version": "14.6", "result": "success", "is_private_ip_changed": true, "private_ip_change_time": "2023-03-06T03:10:49+0800", "statistics_collection_mode": "before_change_private_ip", "detail": "2023-03-06 18:33:26 --- pg_upgrade upgrade task begin" } ] } 异常响应 请参见异常请求结果。
  • 数据保护技术 流水线通过多种数据保护手段和特性,保证通过流水线的数据安全可靠。 表1 流水线的数据保护手段和特性 数据保护手段 简要说明 详细介绍 传输加密(HTTPS) 流水线所有API均采用HTTPS传输协议。 构造请求 个人数据保护 流水线通过控制个人数据访问权限以及记录操作日志等方法防止个人数据泄露,保证您的个人数据安全。 云审计服务支持的操作列表 隐私数据保护 涉及到用户的数据库账号信息需要存储时,提供敏感数据加密存储。 - 数据备份 支持用户数据备份。 - 父主题: 安全
  • 示例代码 为便于理解函数的使用方法,本文为您提供源数据,基于源数据提供函数相关示例。创建表logs,并添加数据,命令示例如下: create table logs( cookieid string, createtime string, url string ) STORED AS parquet; 添加数据如下: cookie1 2015-04-10 10:00:02 url2 cookie1 2015-04-10 10:00:00 url1 cookie1 2015-04-10 10:03:04 url3 cookie1 2015-04-10 10:50:05 url6 cookie1 2015-04-10 11:00:00 url7 cookie1 2015-04-10 10:10:00 url4 cookie1 2015-04-10 10:50:01 url5 cookie2 2015-04-10 10:00:02 url22 cookie2 2015-04-10 10:00:00 url11 cookie2 2015-04-10 10:03:04 url33 cookie2 2015-04-10 10:50:05 url66 cookie2 2015-04-10 11:00:00 url77 cookie2 2015-04-10 10:10:00 url44 cookie2 2015-04-10 10:50:01 url55 示例:将所有记录根据cookieid分组,并按createtime升序排列,返回每组中的最后一行数据。命令示例如下 SELECT cookieid, createtime, url, LAST_VALUE(url) OVER(PARTITION BY cookieid ORDER BY createtime) AS last FROM logs; -- 返回结果: cookieid createtime url last cookie1 2015-04-10 10:00:00 url1 url1 cookie1 2015-04-10 10:00:02 url2 url2 cookie1 2015-04-10 10:03:04 url3 url3 cookie1 2015-04-10 10:10:00 url4 url4 cookie1 2015-04-10 10:50:01 url5 url5 cookie1 2015-04-10 10:50:05 url6 url6 cookie1 2015-04-10 11:00:00 url7 url7 cookie2 2015-04-10 10:00:00 url11 url11 cookie2 2015-04-10 10:00:02 url22 url22 cookie2 2015-04-10 10:03:04 url33 url33 cookie2 2015-04-10 10:10:00 url44 url44 cookie2 2015-04-10 10:50:01 url55 url55 cookie2 2015-04-10 10:50:05 url66 url66 cookie2 2015-04-10 11:00:00 url77 url77 截止到当前行的最后一个值,其实就是它本身。
  • 参数说明 表1 参数说明 参数 是否必选 说明 expr 是 待计算返回结果的表达式。 ignore_nulls 否 BOOLEAN类型,表示是否忽略NULL值。默认值为False。 当参数的值为True时,返回窗口中第一条非NULL的值。 partition_clause 否 指定分区。分区列的值相同的行被视为在同一个窗口内。 orderby_clause 否 指定数据在一个窗口内如何排序。 frame_clause 否 用于确定数据边界。
  • 示例代码 为便于理解函数的使用方法,本文为您提供源数据,基于源数据提供函数相关示例。创建表salary,并添加数据,命令示例如下: CREATE EXTERNAL TABLE salary ( dept STRING, -- 部⻔名称 userid string, -- 员⼯ID sal INT -- 薪⽔ ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile; 添加数据如下: d1,user1,1000 d1,user2,2000 d1,user3,3000 d2,user4,4000 d2,user5,5000 统计小于等于当前薪水的人数占比 select dept, userid, sal, cume_dist() over(order by sal) as cume1 from salary; -- 结果: d1 user1 1000 0.2 d1 user2 2000 0.4 d1 user3 3000 0.6 d2 user4 4000 0.8 d2 user5 5000 1.0 按部⻔分组统计⼩于等于当前薪⽔的⼈数的⽐例 select dept, userid, sal, cume_dist() over (partition by dept order by sal) as cume2 from salary; -- 结果: d1 user1 1000 0.3333333333333333 d1 user2 2000 0.6666666666666666 d1 user3 3000 1.0 d2 user4 4000 0.5 d2 user5 5000 1.0 按照sal降序排序后,结果就是统计 ⼤于等于 当前薪⽔的⼈数的⽐例 select dept, userid, sal, cume_dist() over(order by sal desc) as cume3 from salary; -- 结果: d2 user5 5000 0.2 d2 user4 4000 0.4 d1 user3 3000 0.6 d1 user2 2000 0.8 d1 user1 1000 1.0 select dept, userid, sal, cume_dist() over(partition by dept order by sal desc) as cume4 from salary; -- 结果: d1 user3 3000 0.3333333333333333 d1 user2 2000 0.6666666666666666 d1 user1 1000 1.0 d2 user5 5000 0.5 d2 user4 4000 1.0
  • 示例代码 示例数据 为便于理解函数的使用方法,本文为您提供源数据,基于源数据提供函数相关示例。创建表logs,并添加数据,命令示例如下: create table logs( cookieid string, createtime string, url string ) STORED AS parquet; 添加数据如下: cookie1 2015-04-10 10:00:02 url2 cookie1 2015-04-10 10:00:00 url1 cookie1 2015-04-10 10:03:04 url3 cookie1 2015-04-10 10:50:05 url6 cookie1 2015-04-10 11:00:00 url7 cookie1 2015-04-10 10:10:00 url4 cookie1 2015-04-10 10:50:01 url5 cookie2 2015-04-10 10:00:02 url22 cookie2 2015-04-10 10:00:00 url11 cookie2 2015-04-10 10:03:04 url33 cookie2 2015-04-10 10:50:05 url66 cookie2 2015-04-10 11:00:00 url77 cookie2 2015-04-10 10:10:00 url44 cookie2 2015-04-10 10:50:01 url55 将所有记录根据cookieid分组,并按createtime升序排列,返回窗口内往上第2行的值。命令示例如下 示例1: SELECT cookieid, createtime, url, LAG(createtime, 2) OVER (PARTITION BY cookieid ORDER BY createtime) AS last_2_time FROM logs; -- 返回结果: cookieid createtime url last_2_time cookie1 2015-04-10 10:00:00 url1 NULL cookie1 2015-04-10 10:00:02 url2 NULL cookie1 2015-04-10 10:03:04 url3 2015-04-10 10:00:00 cookie1 2015-04-10 10:10:00 url4 2015-04-10 10:00:02 cookie1 2015-04-10 10:50:01 url5 2015-04-10 10:03:04 cookie1 2015-04-10 10:50:05 url6 2015-04-10 10:10:00 cookie1 2015-04-10 11:00:00 url7 2015-04-10 10:50:01 cookie2 2015-04-10 10:00:00 url11 NULL cookie2 2015-04-10 10:00:02 url22 NULL cookie2 2015-04-10 10:03:04 url33 2015-04-10 10:00:00 cookie2 2015-04-10 10:10:00 url44 2015-04-10 10:00:02 cookie2 2015-04-10 10:50:01 url55 2015-04-10 10:03:04 cookie2 2015-04-10 10:50:05 url66 2015-04-10 10:10:00 cookie2 2015-04-10 11:00:00 url77 2015-04-10 10:50:01 说明:因为没有设置默认值,当没有上两行时显示为NULL。 示例2: SELECT cookieid, createtime, url, LAG(createtime,1,'1970-01-01 00:00:00') OVER (PARTITION BY cookieid ORDER BY createtime) AS last_1_time FROM cookie4; -- 结果: cookieid createtime url last_1_time cookie1 2015-04-10 10:00:00 url1 1970-01-01 00:00:00 (显示默认值) cookie1 2015-04-10 10:00:02 url2 2015-04-10 10:00:00 cookie1 2015-04-10 10:03:04 url3 2015-04-10 10:00:02 cookie1 2015-04-10 10:10:00 url4 2015-04-10 10:03:04 cookie1 2015-04-10 10:50:01 url5 2015-04-10 10:10:00 cookie1 2015-04-10 10:50:05 url6 2015-04-10 10:50:01 cookie1 2015-04-10 11:00:00 url7 2015-04-10 10:50:05 cookie2 2015-04-10 10:00:00 url11 1970-01-01 00:00:00 (显示默认值) cookie2 2015-04-10 10:00:02 url22 2015-04-10 10:00:00 cookie2 2015-04-10 10:03:04 url33 2015-04-10 10:00:02 cookie2 2015-04-10 10:10:00 url44 2015-04-10 10:03:04 cookie2 2015-04-10 10:50:01 url55 2015-04-10 10:10:00 cookie2 2015-04-10 10:50:05 url66 2015-04-10 10:50:01 cookie2 2015-04-10 11:00:00 url77 2015-04-10 10:50:05
  • 参数说明 表1 参数说明 参数 是否必选 说明 expr 是 待计算返回结果的表达式。 offset 否 偏移量,BIGINT类型常量,取值大于等于0。值为0时表示当前行,为1时表示前一行,以此类推。默认值为1。输入值为STRING类型、DOUBLE类型则隐式转换为BIGINT类型后进行运算。 default 是 常量,默认值为NULL。 当offset指定的范围越界时的缺省值,需要与expr对应的数据类型相同。如果expr非常量,则基于当前行进行求值。 partition_clause 否 指定分区。分区列的值相同的行被视为在同一个窗口内。 orderby_clause 否 指定数据在一个窗口内如何排序。
  • 示例代码 示例数据 为便于理解函数的使用方法,本文为您提供源数据,基于源数据提供函数相关示例。创建表logs,并添加数据,命令示例如下: create table logs( cookieid string, createtime string, url string ) STORED AS parquet; 添加数据如下: cookie1 2015-04-10 10:00:02 url2 cookie1 2015-04-10 10:00:00 url1 cookie1 2015-04-10 10:03:04 url3 cookie1 2015-04-10 10:50:05 url6 cookie1 2015-04-10 11:00:00 url7 cookie1 2015-04-10 10:10:00 url4 cookie1 2015-04-10 10:50:01 url5 cookie2 2015-04-10 10:00:02 url22 cookie2 2015-04-10 10:00:00 url11 cookie2 2015-04-10 10:03:04 url33 cookie2 2015-04-10 10:50:05 url66 cookie2 2015-04-10 11:00:00 url77 cookie2 2015-04-10 10:10:00 url44 cookie2 2015-04-10 10:50:01 url55 将所有记录根据cookieid分组,并按createtime升序排列,返回窗口内往下第2行和第1行的值。命令示例如下 SELECT cookieid, createtime, url, LEAD(createtime, 2) OVER(PARTITION BY cookieid ORDER BY createtime) AS next_2_time, LEAD(createtime, 1, '1970-01-01 00:00:00') OVER(PARTITION BY cookieid ORDER BY createtime) AS next_1_time FROM logs; -- 返回结果: cookieid createtime url next_2_time next_1_time cookie1 2015-04-10 10:00:00 url1 2015-04-10 10:03:04 2015-04-10 10:00:02 cookie1 2015-04-10 10:00:02 url2 2015-04-10 10:10:00 2015-04-10 10:03:04 cookie1 2015-04-10 10:03:04 url3 2015-04-10 10:50:01 2015-04-10 10:10:00 cookie1 2015-04-10 10:10:00 url4 2015-04-10 10:50:05 2015-04-10 10:50:01 cookie1 2015-04-10 10:50:01 url5 2015-04-10 11:00:00 2015-04-10 10:50:05 cookie1 2015-04-10 10:50:05 url6 NULL 2015-04-10 11:00:00 cookie1 2015-04-10 11:00:00 url7 NULL 1970-01-01 00:00:00 cookie2 2015-04-10 10:00:00 url11 2015-04-10 10:03:04 2015-04-10 10:00:02 cookie2 2015-04-10 10:00:02 url22 2015-04-10 10:10:00 2015-04-10 10:03:04 cookie2 2015-04-10 10:03:04 url33 2015-04-10 10:50:01 2015-04-10 10:10:00 cookie2 2015-04-10 10:10:00 url44 2015-04-10 10:50:05 2015-04-10 10:50:01 cookie2 2015-04-10 10:50:01 url55 2015-04-10 11:00:00 2015-04-10 10:50:05 cookie2 2015-04-10 10:50:05 url66 NULL 2015-04-10 11:00:00 cookie2 2015-04-10 11:00:00 url77 NULL 1970-01-01 00:00:00
  • 参数说明 表1 参数说明 参数 是否必选 说明 expr 是 待计算返回结果的表达式。 offset 否 偏移量,BIGINT类型常量,取值大于等于0。值为0时表示当前行,为1时表示前一行,以此类推。默认值为1。输入值为STRING类型、DOUBLE类型则隐式转换为BIGINT类型后进行运算。 default 是 常量,默认值为NULL。 当offset指定的范围越界时的缺省值,需要与expr对应的数据类型相同。如果expr非常量,则基于当前行进行求值。 partition_clause 否 指定分区。分区列的值相同的行被视为在同一个窗口内。 orderby_clause 否 指定数据在一个窗口内如何排序。
  • 示例代码 为便于理解函数的使用方法,本文为您提供源数据,基于源数据提供函数相关示例。创建表logs,并添加数据,命令示例如下: CREATE TABLE logs ( cookieid string, createtime string, pv INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile; 添加数据如下: cookie1 2015-04-10 1 cookie1 2015-04-11 5 cookie1 2015-04-12 7 cookie1 2015-04-13 3 cookie1 2015-04-14 2 cookie1 2015-04-15 4 cookie1 2015-04-16 4 cookie2 2015-04-10 2 cookie2 2015-04-11 3 cookie2 2015-04-12 5 cookie2 2015-04-13 6 cookie2 2015-04-14 3 cookie2 2015-04-15 9 cookie2 2015-04-16 7 示例:将所有记录根据cookieid分组,并按pv降序排列,返回组内每行的序号。命令示例如下: select cookieid, createtime, pv, rank() over(partition by cookieid order by pv desc) as rank from logs where cookieid = 'cookie1'; -- 结果: cookie1 2015-04-12 7 1 cookie1 2015-04-11 5 2 cookie1 2015-04-16 4 3 (并列第三) cookie1 2015-04-15 4 3 cookie1 2015-04-13 3 5 (跳过4,从5开始) cookie1 2015-04-14 2 6 cookie1 2015-04-10 1 7
  • 示例代码 为便于理解函数的使用方法,本文为您提供源数据,基于源数据提供函数相关示例。创建表logs,并添加数据,命令示例如下: CREATE TABLE logs ( cookieid string, createtime string, pv INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile; 添加数据如下: cookie1 2015-04-10 1 cookie1 2015-04-11 5 cookie1 2015-04-12 7 cookie1 2015-04-13 3 cookie1 2015-04-14 2 cookie1 2015-04-15 4 cookie1 2015-04-16 4 cookie2 2015-04-10 2 cookie2 2015-04-11 3 cookie2 2015-04-12 5 cookie2 2015-04-13 6 cookie2 2015-04-14 3 cookie2 2015-04-15 9 cookie2 2015-04-16 7 示例:将所有记录根据cookieid分组,并按pv降序排列,返回组内每行的序号。命令示例如下: select cookieid, createtime, pv, row_number() over (partition by cookieid order by pv desc) as index from logs; -- 返回结果: cookie1 2015-04-12 7 1 cookie1 2015-04-11 5 2 cookie1 2015-04-16 4 3 cookie1 2015-04-15 4 4 cookie1 2015-04-13 3 5 cookie1 2015-04-14 2 6 cookie1 2015-04-10 1 7 cookie2 2015-04-15 9 1 cookie2 2015-04-16 7 2 cookie2 2015-04-13 6 3 cookie2 2015-04-12 5 4 cookie2 2015-04-11 3 5 cookie2 2015-04-14 3 6 cookie2 2015-04-10 2 7
  • 参数说明 表1 参数说明 参数 是否必选 说明 expr 是 待计算返回结果的表达式。 ignore_nulls 否 BOOLEAN类型,表示是否忽略NULL值。默认值为False。 当参数的值为True时,返回窗口中第一条非NULL的值。 partition_clause 否 指定分区。分区列的值相同的行被视为在同一个窗口内。 orderby_clause 否 指定数据在一个窗口内如何排序。 frame_clause 否 用于确定数据边界。
  • 示例代码 示例数据 为便于理解函数的使用方法,本文为您提供源数据,基于源数据提供函数相关示例。创建表logs,并添加数据,命令示例如下: create table logs( cookieid string, createtime string, url string ) STORED AS parquet; 添加数据如下: cookie1 2015-04-10 10:00:02 url2 cookie1 2015-04-10 10:00:00 url1 cookie1 2015-04-10 10:03:04 url3 cookie1 2015-04-10 10:50:05 url6 cookie1 2015-04-10 11:00:00 url7 cookie1 2015-04-10 10:10:00 url4 cookie1 2015-04-10 10:50:01 url5 cookie2 2015-04-10 10:00:02 url22 cookie2 2015-04-10 10:00:00 url11 cookie2 2015-04-10 10:03:04 url33 cookie2 2015-04-10 10:50:05 url66 cookie2 2015-04-10 11:00:00 url77 cookie2 2015-04-10 10:10:00 url44 cookie2 2015-04-10 10:50:01 url55 示例:将所有记录根据cookieid分组,并按createtime升序排列,返回每组中的第一行数据。命令示例如下 SELECT cookieid, createtime, url, FIRST_VALUE(url) OVER (PARTITION BY cookieid ORDER BY createtime) AS first FROM logs; 返回结果如下: cookieid createtime url first cookie1 2015-04-10 10:00:00 url1 url1 cookie1 2015-04-10 10:00:02 url2 url1 cookie1 2015-04-10 10:03:04 url3 url1 cookie1 2015-04-10 10:10:00 url4 url1 cookie1 2015-04-10 10:50:01 url5 url1 cookie1 2015-04-10 10:50:05 url6 url1 cookie1 2015-04-10 11:00:00 url7 url1 cookie2 2015-04-10 10:00:00 url11 url11 cookie2 2015-04-10 10:00:02 url22 url11 cookie2 2015-04-10 10:03:04 url33 url11 cookie2 2015-04-10 10:10:00 url44 url11 cookie2 2015-04-10 10:50:01 url55 url11 cookie2 2015-04-10 10:50:05 url66 url11 cookie2 2015-04-10 11:00:00 url77 url11
  • 示例代码 示例数据 为便于理解函数的使用方法,本文为您提供源数据,基于源数据提供函数相关示例。创建表salary,并添加数据,命令示例如下: CREATE EXTERNAL TABLE salary ( dept STRING, -- 部⻔名称 userid string, -- 员⼯ID sal INT -- 薪⽔ ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile; 添加数据如下: d1,user1,1000 d1,user2,2000 d1,user3,3000 d2,user4,4000 d2,user5,5000 示例:计算员工薪水在部门内的百分比排名。 select dept, userid, sal, percent_rank() over(partition by dept order by sal) as pr2 from salary; -- 结果分析: d1 user1 1000 0.0 -- (1-1)/(3-1)=0.0 d1 user2 2000 0.5 -- (2-1)/(3-1)=0.5 d1 user3 3000 1.0 -- (3-1)/(3-1)=1.0 d2 user4 4000 0.0 -- (1-1)/(2-1)=0.0 d2 user5 5000 1.0 -- (2-1)/(2-1)=1.0
  • 为什么事务调试总是失败? 在使用调试功能前,要先确认如下两点: 确保资源组为运行状态。 确保资源组的调试节点和被压测的应用之间网络互通。 登录弹性云服务控制台。 在弹性云服务器中分别找到调试机和执行机的节点并登录。 curl对应应用的URL查看网络是否连通。 满足以上两点后,对事务进行调试,单击“查看日志”查看返回内容是否正确。 如果调试功能返回内容报错,这就是使用调试功能的主要目的,需要去检查自己传入参数是否正确,检查报文配置的内容是否正确。 父主题: 压测工程管理
  • 计费项 PerfTest费用包括两部分:所使用资源(弹性云服务器)的费用和使用PerfTest的费用。 所使用资源的费用:主要用于部署PerfTest服务的执行集群,由对应的弹性云服务器服务计费,PerfTest不再单独收费。 压测资源组的节点,需提前在云容器引擎中创建,详细步骤请参考创建节点。资源组中节点由对应的弹性云服务器服务计费。 使用PerfTest的费用:PerfTest按压测所消耗的VUM收费,具体计费信息,参见产品价格详情。
  • OCR识别中,哪些算有效计费 OCR服务通过RestFul API调用,计费以Https请求返回的状态码为准,当返回状态码为2xx(如200/201)时,表示调用成功并进行扣费。 OCR服务通过套餐包计费方式,来降低调用成本,从绝大部分客户的使用来看,客户上传错误样本导致计费的占比非常非常小,几乎可忽略不计。 在客户使用OCR能力,进行二次开发时,可以尽可能的通过页面可视化提醒等方式,引导使用者尽量拍摄符合人眼易于识别的图片,以保障数据质量、同时提升识别准确率。 由于图片的输入非常开放,因此为了避免恶意攻击,在公有云上对有效识别的信息(即便部分不准)也会计费,类似于在通话质量不佳时通常也是要求计费。 父主题: 计费FAQ
共100000条