关于分析:销售管理和销售分析怎么做

作为一个优良的销售,除了要会和客户沟通之外,领有复盘和剖析的能力可能事倍功半,为将来的营销指引方向。很多销售也会有用Excel制作报表,复盘整顿并向领导汇报的习惯,然而往往因为不足业余的剖析概念和办法,导致公司累积的大量销售数据得不到无效的利用,无奈领导决策,而销售管理人员要面对的数据量就更大了,海量的数据可能让他们解决起来十分头疼。于是乎,破费了大量精力和工夫的销售数据分析只停留在简略的汇总和流水帐式的通报,不足对客户、竞争等各方面的深入分析,往往达不到指标。 剖析思路要做一个无效的销售剖析,首先要有清晰的剖析思路: 1、比照剖析 比照剖析实用的场景十分多,例如工夫周期的比照、区域或店铺之间的比照、商品品类之间比照、竞品之间的比照等等。比照剖析次要的目标就是通过通过对多组数据的察看,而后找出差别点,再结合实际状况,舍短取长,进而进步整体的销售业绩。 2、客户剖析 咱们能够从客户的身上得出十分多的要害信息,例如客户的性别,居住地,购买习惯,购买金额,复购率等,也能够利用一些业余的模型对客户数据进行分类,例如RFM模型。只有对这些数据进行整合,就能得出一个具体的用户画像,这会给咱们提供大量的高价值信息,只有把握了客户的购买行为,便能够领导企业制订进一步的销售策略。 3、销售人员剖析 销售人员是整个销售过程中最具备生命力的,通过对销售人员的整体数据进行剖析,咱们能够很快地找出销售团队存在的不足之处,每个销售人员之间的差距也能够和盘托出。咱们也能够为销售人员制订正当的绩效考核计划,利用可量化的数字去评估每个销售人员的综合能力,让销售团队长期保持在成长和竞争的状态。 工具抉择工欲善其事,必先利其器,要做好销售剖析,一个好的剖析工具是必不可少的。如果仅仅用Excel,首先它对于数据量大的时候性能低、须要重复手动更新等,相对来说效率较低。然而Excel作为最广泛和通用的数据分析工具,其丰盛的分析方法和遍及度还是有其价值,优化的最好方法是,能够利用一些优良的Excel插件,补救Excel的毛病,同时舍短取长,升高用其余工具的学习老本。从这个角度来说,倡议应用电子表格软件(Smartbi Spreadsheet),它除了“真Excel”的特色之外,对于销售治理还有以下劣势: 1、10分钟实现销售报表制作只有把数据源导进去,就能通过鼠标拖拽疾速失去剖析后果,无需写任何代码,操作简便,无附加学习老本。 2、辞别反复做表销售报表的特点是常常有重复性需要,例如日报、周报、月报,各区域的数据也常常变动。通过电子表格软件可实现数据追加、连贯数据库等性能,无需每天导数,数据完满主动刷新。 场景利用场景一:销售业绩实现进度表销售业绩实现进度表是销售过程中十分重要的一个报表,通过该报表,咱们能够很清晰看出每个销售团队或者是每个品类的销售指标、理论销售额、实现百分比等数据,有利于咱们把握整体进度和兼顾全局。 场景二:销售人员多人填报数据填报的性能在工作中利用十分宽泛,能够说是一个十分大的刚需。次要是因为Excel做数据汇总的效率非常低,如果须要同时汇总十分多销售人员上报的数据,这对于报表人来说几乎是一场噩梦。然而电子表格软件的填报性能就十分实用,能够实现多人线上填报,零碎最初会主动对填报数据进行汇总。 销售剖析是销售过程中十分重要的一环,通过对各项数据进行剖析和总结,能够为企业策略制订、资源分配、产品生产营销打算制订等我的项目提供数据参考和撑持。要做好销售剖析,首先思路很重要,其次是要有一个适合的工具,无妨尝试看看,帮忙企业降本增效。 马上体验如果对电子表格软件Spreadsheet的性能感兴趣,也能够进一步理解(https://www.smartbi.com.cn/sp...)

January 11, 2023 · 1 min · jiezi

关于分析:喜报SelectDB-携手中航信移动科技有限公司四川大数据技术服务中心双双入选大数据星河Galaxy优秀案例

近日,由中国信息通信研究院、中国通信标准化协会领导,中国通信标准化协会大数据技术标准推动委员会(CCSA TC601)主办的第五届数据资产治理大会在京落下帷幕。大会以“破局·变革·共治”为主题,公布了多项重要研究成果,并揭晓了大数据“星河(Galaxy)”案例入选名单。其中,由 SelectDB 携手中航信挪动科技有限公司、四川省大数据技术服务中心联结申报的两项案例「基于 SelectDB 的航旅纵横用户行为在线剖析平台」、「基于 SelectDB 的超大规模核酸检测数据平台」,从 595 份申报案例中怀才不遇,双双入选 2022 星河案例「数据库优良案例」! 为促成大数据技术产品及相干产业倒退,放慢培养数据因素市场、充分发挥数据作为生产因素的独特价值,建立行业标杆楷模力量,中国信息通信研究院、中国通信标准化协会大数据技术标准推动委员会(CCSA TC601)独特组织第六届大数据“星河(Galaxy)”案例征集流动,旨在通过总结和推广大数据产业倒退的优秀成果,推动大数据在社会生产生存中的利用,促成大数据技术产品及相干产业倒退。 作为最具国民化的民航出行产品,中航信挪动科技有限公司打造的翻新产品「航旅纵横」始终以用户服务质量为首要出发点,致力于全方位打造民航畛域数字化综合服务平台。随着业务精细化经营的需要,数据指标时效性成为制约业务倒退的掣肘,因而 2022 年3 月中航信挪动科技有限公司与北京飞轮数据科技有限公司发展深刻单干,基于云原生实时数仓 SelectDB 构建了全新的用户行为在线剖析平台。该平台的落地利用使得亿级别数据响应工夫从分钟级降至秒级,数据开发效率晋升的同时大幅升高了保护老本,同时也使业务效益、用户体验有了显著晋升。 该案例成绩通过“互联网+民航”的深度交融,实现了服务模式、商业模式等方面的翻新,不仅进步业务收益,还晋升了民航常旅客出行全流程的体验,帮忙企业在挪动互联网畛域获得重要冲破。 为给大规模核酸检测数据提供“实时处理、高效流转、疾速剖析”的能力,2022 年 8 月四川省大数据技术服务中心过引入云原生数据仓库 SelectDB 构建了超大规模核酸检测数据平台,晋升四川省核酸检测零碎稳定性,进步零碎应答全省大规模全员采样能力。 该案例的胜利落地保障了四川省超大规模的全员核酸检测工作,缓解核酸检测零碎采样业务压力,晋升核酸检测数据的流转效率,优化核酸检测剖析成果,实现了日均解决 6 亿条以上核酸检测数据能力,为打赢四川省疫情防控狙击战施展重要作用,失去四川省省委、省政府次要领导高度肯定。作为基于 Apache Doris 内核打造的新一代云原生实时数据仓库,SelectDB Cloud 采纳齐全存算拆散的架构设计,是国内首款实现多云中立、全托管且 SaaS 化的云数据仓库,具备极致性价比、交融对立、简略易用、企业个性和开源凋谢五大特色,解决了企业构建数仓过程中最为关注的“降本增效”的艰难,实现了在老本升高 50% 以上的同时,性能晋升超 1.5 倍的问题;无效解决了传统数仓计划造成的零碎简单、资源节约、数据冗余等一系列问题。同时,SelectDB Cloud 面向企业推出了笼罩企业外部数据平台、内部客户的报表与剖析、用户画像与行为剖析、日志存储和剖析为等典型数据分析场景的四大特色解决方案,企业带来显著的性能晋升和相干收益。 # 对于 SelectDB 北京飞轮数据科技有限公司(简称:SelectDB) 是一家专一于开源技术创新的云原生实时数据库厂商,也是 Apache Doris 背地的商业化公司,致力于为 Apache Doris 社区提供一个由全职工程师、产品经理和反对工程师组成的团队,凋敝开源社区生态,打造实时剖析型数据库畛域的国内工业界规范。基于 Apache Doris 研发的新一代云原生实时数仓 SelectDB,运行于多家云上,为客户提供极简运维和极致性价比的数仓服务。

January 5, 2023 · 1 min · jiezi

关于分析:以终为始智能分析提供便捷的服务支撑让数据更好的产生业务价值

以后,寰球进入数字化经济时代,大家都非常重视数据产生的价值。很多企业正在进行数字化转型,踊跃推动业务数据化、数据智能化、智能业务化,立足买通数据和生产通道,实现数据驱动的智慧经营,并获得了十分好的成果。 然而,有局部企业却陷入一种幸福的懊恼,尽管实现数据智能化,也积淀了大量的数据资产,但用户并没有充沛体验到数据产生的价值。抛开数据自身,还有一个重要因素是企业在智能业务化过程中,没有买通数据生产和业务应用最初一公里的环节,数据并没有被用户真正无效的利用起来,次要起因有: 1. 数据资产多,找数难:面对海量数据,用户无奈疾速、精确找到其须要的数据。以某企业为例,通过多年数字化建设,积攒了丰盛的数据资产,其中报表1000+,指标3000+,模型200+。用户要消耗大量的工夫和精力能力找到对应指标和数据,不胜其烦,长此以往失去用数的急躁。 2. 被动式应用,响应慢:面对数据变动,不足被动洞察的伎俩,被动式接管,不查不知。以某企业为例,其鼎力推动用数据进行科学决策。但业务变动快、员工每天面对客户且事务繁多,不能在第一工夫登录零碎理解最新数据状况,虽有数据却无奈基于数据变动及时调整市场策略。 针对这些痛点,用友联合多年的企业数字化转型教训,提出YonBIP数据智能剖析计划,通过智能发现和智能推送无效解决这些问题,让用户更加便捷、不便地获取和应用数据,让数据更好的利用业务产生价值! 智能发现联网时代最平凡的产品之一就是Google的搜寻框,无效解决了信息爆炸的问题。以后也是数据大爆炸的时代,如何疾速获取数据显得至关重要。 YonBIP智能剖析计划采纳AI技术,提供基于Search Driven Analytic的数据智能发现能力,搜寻关键字就能实现海量数据的疾速定位和查找,让用户更高效的查找和拜访数据,再也不为应用数据而烦心。 次要具备以下特点: 1.应用简略反对关键字所见即所得的搜寻数据 2.信息全面反对指标、标签、模型等多种类型的常识抽取 3.业务加强反对排序、过滤、范畴等多种逻辑组合业务 如下图所示,简略输出“各大区销售金额利润”,零碎主动搜寻、过滤并组合生成相应的数据信息,极大的节约了用户工夫,晋升数据分析的效率: 基于搜寻的数据智能发现智能推送传统数据获取形式是靠人找数,用户要想理解最新数据,须要及时登录零碎查问。如何能力由“人找数”到“数找人”,让用户把更多的工夫聚焦业务翻新? YonBIP智能剖析计划采纳AI技术,围绕业务关注点智能剖析数据和用户之间的关系,实现“数找人”,被动推送个性化的数据、指标、报告,让用户能及时获取数据,应用更省心。 次要具备以下特点: 1.被动推送反对数据订阅,反对多种策略推送数据和报告 2.智能举荐反对热门数据、报告智能举荐,个性化推送给用户应用 3.全渠道体验反对APP、邮件等全渠道的数据推送,随时在线拜访 如下图所示,用户订阅了利润稳定指标,当利润小于阈值时,零碎被动推送给用户查阅,让用户第一工夫晓得变动,数据应用起来更加省心和舒心。 基于订阅的数据智能推送YonBIP智能剖析计划通过智能发现和智能推送,提供便捷的数据服务撑持,让用户应用数据更简略,把工夫和精力聚焦业务翻新,更大施展数据的价值。 咱们认为,要以终为始的推动数据落地利用能力产生价值,岂但要围绕客户需要和业务场景充沛开掘数据潜在的价值,也要提供高效、便捷的数据服务撑持形式。只有数据生产、利用两手抓能力让数据端到端嵌入业务生产应用,能力真正实现数据驱动的智慧经营!

January 24, 2022 · 1 min · jiezi

关于分析:转换匹配患者记录看Amazon-Lake-Formation-FindMatches显神通

患者匹配是实现医疗护理互通性的次要阻碍之一。不匹配的患者记录和无奈检索患者历史信息可能重大妨碍做出正确的临床决定,并导致漏诊或医治延误。另外,医疗护理提供者常常会花精力去解决患者反复数据的删除,尤其当他们的数据库中的患者记录数量急速减少时。电子衰弱记录 (EHR) 近年来大幅优化了患者的平安和护理协调,但精确的患者匹配对很多医疗护理组织来说依然是一项挑战。 反复的患者记录会因为各种起因产生,包含人为生成记录的插入、删除、替换,或转置谬误。尽管光学字符辨识 (OCR) 软件会将患者记录数字化,但也可能引入谬误。 咱们能够采纳多种记录匹配算法来解决此问题。它们包含:根本确定性法(如分组和比拟相干字段,包含 SSN、姓名或出生日期等)、语音编码零碎,以及更高级的应用机器学习 (ML) 的算法。 Amazon Lake Formation 是一项合乎 HIPAA 要求的服务,可帮忙您在若干简略的步骤内构建平安的数据湖。Lake Formation 还内置 FindMatches,这项 ML 转换性能让您能够在不同的数据集中匹配记录,并且辨认与移除反复的记录,但须要较少,甚至齐全不须要任何人为干涉。 本文将向您介绍如何应用 FindMatches ML 转换在综合生成的数据集里辨认匹配的患者记录。要应用 FindMatches,您无需编写代码或理解 ML 的运作形式。如果没有牢靠的惟一集体标识符,在数据中查找匹配将变得十分实用,即便其字段不齐全匹配。 患者数据集因为其具备敏感性质,不同国家采纳各种法规对患者数据进行治理。此现状导致了用于训练匹配算法的患者数据通常较为不足,让模型的开发变得更加简单。绕开此类挑战的常见方法,即应用综合数据。本文将基于 Open Source Freely Extensible Biomedical Record Linkage Program (FEBRL) 生成患者数据。FEBRL 采纳隐马尔可夫模型 (HMM) 为患者记录匹配筹备姓名和地址数据。它还容许对导致反复的事实患者数据集进行模仿,这些反复数据可能有以下不匹配类型: 1.空白字段。 2.排版谬误,如拼写错误、字符转置或字段调换等。 3.缩写两头名和记录残缺两头名。 4.不同格局的邮寄地址。 5.与 OCR 相干的谬误。 6.语音谬误。 7.无全局惟一患者或集体标识符。每一个医疗护理提供商都可能为雷同人员调配一个患者标识符,但它或者并非相似于 SSN 的集体标识符,因而,他们有数据集但没有键。 FEBRL 能够依据可配置的参数生成此类数据集,以扭转产生每种谬误的可能性,进而涵盖导致反复的各种情景。综合数据集的生成不在本文的探讨范畴之内;本文将提供一个预生成的数据集以供您摸索之用: https://aws-bigdata-blog.s3.a... 简而言之,以下是用于运行 FindMatches 的综合数据集的生成步骤: 1.下载并装置 FEBRL。 2.批改参数以创立数据集,对您的预期进行模仿。如需更多信息,见 FEBRL 数据集生成阐明: https://github.com/J535D165/F... 3.清理数据集(此举将为每一条记录确认雷同的架构,并移除单引号和家庭角色)。 本文数据集应用的 Amazon 区域为美国东部(弗吉尼亚北部)。 FRBRL 患者数据结构下表显示 FEBRL 患者数据的构造。此类数据蕴含 40000 条记录。 ...

January 16, 2022 · 3 min · jiezi

关于分析:借助Amazon-EMR与外部KDC进行身份认证有效集成业务场景

前言平安始终是亚马逊云科技的头等工作,也是Amazon EMR这项托管Hadoop服务的首要准则。很多客户越来越意识到平安的重要性,尤其数据安全的重要性,在客户进行全球化业务扩大的时候,面对各国家区域的合规要求,更多采纳Kerberos在EMR上进行身份验证。然而很多hadoop用户第一次尝试集成Amazon EMR和Kerberos时,尤其面对平安审计部门要求而首次应用Amazon EMR与内部Kerberos进行集成时,往往因为对Kerberos自身不相熟,对Amazon EMR不相熟,导致配置谬误而无奈集成,本文提供了步骤指南,帮忙用户在亚马逊云上从头构建的关键步骤包含,创立Kerberos并集成Amazon EMR和LDAP。 在《Amazon EMR迁徙指南》中更多的是对Amazon EMR上可配置Kerberos集成形式的选项及配置后各个组件与KDC的交互认证流程的阐明,本博客是针对Amazon EMR与内部KDC(非Amazon EMR自带KDC或单向信赖的KDC)集成业务场景的具体实现,这部分在亚马逊云科技官网的文档里没有具体的阐明,且自建内部KDC须要合乎特定的条件及账号标准,否则其配置集成的Amazon EMR无奈胜利创立和启动。 Kerberos简介Amazon EMR发行版 5.10.0 及更高版本反对Kerberos。Kerberos是Amazon EMR可反对的最平安的身份验证和受权机制。Kerberos会要求用户提供本人的凭据,并从地方身份验证服务器获取证实用户身份的票证,随后该票证即可用于为集群中的资源分配拜访。这是麻省理工学院 (MIT) 创立的一种网络身份验证协定。Kerberos应用公有密钥加密来提供弱小的身份验证,以便不会通过网络以未加密的格局发送明码或其余凭证。 在Kerberos中,须要进行身份验证的服务和用户称为委托人(principals.)。委托人存在于 Kerberos畛域(realm)中。在该畛域中,被称为密钥散发核心 (KDC) 的Kerberos服务器为委托人提供身份验证办法。KDC通过颁发用于身份验证的票证来执行此操作。KDC保护一个蕴含其畛域中的委托人、它们的明码及其他无关每个委托人的治理信息的数据库。KDC还能够承受来自其余畛域中的委托人的身份验证凭证,这称为跨畛域信赖。此外,Amazon EMR集群能够应用内部KDC对委托人进行身份验证。 Amazon EMR与Kerberos集成形式应用程序之间的身份验证举荐应用Kerberos形式。在应用Kerberos身份验证时,应用程序会向密钥散发核心(KDC)验证本身身份以及连贯到本人的其余应用程序。为Amazon  EMR集群应用Kerberos时有三个选项:集群专用KDC、跨畛域信赖以及内部KDC。每种选项的差别请参阅多种架构抉择,本文将在Amazon EC2上创立一个内部麻省理工学院KDC(MIT KDC),同时创立一个Amazon EMR集群并应用MIT KDC服务器中定义和保护的委托人进行配置。 在Amazon EC2上搭建内部KDC在Amazon EC2上搭建内部KDC 1:通过Amazon Linux 2 AMI镜像,并按默认配置启动Amazon EC2,装置Kerberos安装包。留神该Amazon EC2所在子网能够与稍后创立的Amazon EMR集群网络互通。如果装置在公有子网,请确保有跳转折能够拜访到该机器。 $ sudo yum install -y krb5-server krb5-libs krb5-auth-dialog2:配置kdc.conf,将默认的EXAMPLE.COM更改为客户化域名(本文命名为EXTKDC.COM)。留神域名肯定要大写。 $ sudo cat /var/kerberos/krb5kdc/kdc.conf[kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88[realms] EXTKDC.COM = { #master_key_type = aes256-cts acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/share/dict/words admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal }*左右滑动查看更多 ...

December 22, 2021 · 1 min · jiezi

关于分析:通过Amazon-SageMaker与Amazon-Step-Functions实现机器学习的CICD-方案

在传统的机器学习工作流程当中,常常会面临两个问题: (1)数据迭代迅速,须要定期对模型进行从新训练,每次训练实现后,都须要重新部署模型,如何实现训练与部署过程的的自动化,从而晋升工作效率; (2)算法团队一直地对算法进行开发与变更,并且须要尝试不同的特色工程,每次变更都须要做单元测试,如何将Amazon SageMaker与CI/CD工具整合,在晋升开发效率的同时缩小运维团队的工作累赘。本文会介绍通过Amazon SageMaker与Amazon Step Functions进行模型主动训练与部署的办法,并会与Amazon CodeCommit、Amazon CodeBuild、Jenkins集成,实现机器学习的CI/CD计划。 相干技术介绍在开始之前,请先对以下技术进行简略理解。 1.1 Amazon SageMakerAmazon SageMaker 是一项齐全托管的机器学习PaaS平台,它提供的性能残缺的笼罩了整个机器学习生命周期。并且您不须要对用于训练和推理的实例进行保护,只须要依据工作负载指定相应的机型与数量即可,通过简略的API进行模型的一键训练与部署。 1.2 Amazon Step FunctionsAmazon Step Functions是一项云原生的workflow编排工具,在创立时不须要配置基础设施,只须要在工作流程当中指定要执行的步骤即可。Amazon Step Functions为开发者提供了数据迷信开发工具包,并且曾经与Amazon SageMaker进行了集成,开发者能够通过面向对象编程的形式在workflow中定义Amazon SageMaker的步骤,因而能够将模型训练与部署的过程自动化。 1.3 Amazon CodeCommit与Amazon CodeBuildAmazon CodeCommit与Amazon CodeBuild是Amazon CI/CD系列当中的两个重要服务,Amazon CodeCommit是一项齐全托管的代码仓库服务,能够提供给用户近乎有限的代码存储空间,在应用习惯上和规范的git工具没有差别。Amazon CodeBuild 可编译源代码,运行单元测试,并构建可供部署的我的项目,并且也无需预置、治理和扩大本人的构建服务器,能够在构建申请顶峰时实现主动扩大。 1.4 JenkinsJenkins是一个自蕴含的开源自动化服务器,可用于自动化与构建,测试以及交付或部署软件无关的各种工作。它的开源社区十分沉闷,整合了1000多种插件,为CI/CD的过程提供了极大的灵活性,并且也能够与Amazon Code系列集成,使得开发者能够轻松的集成两者的劣势。 演练2.1 流程架构图与过程简介 (1)在一台Amazon EC2上装置Jenkins,配置好与Amazon CodeCommit、Amazon CodeBuild集成的插件; (2)开发人员push代码到Amazon CodeCommit后触发Jenkins pipeline,代码在Amazon CodeBuild中封装成docker image,并推送到ECR当中(注:在本试验中,为了不便在CI/CD过程中对代码版本进行管制,会通过BYOC的形式在Amazon SageMaker中应用自定义算法,该形式须要本人编写Dockerfile并将算法build为docker image,而后上传到ECR当中,具体介绍可参考将您的算法或模型与Amazon SageMaker联合应用); (3)触发Amazon  Step Functions执行Amazon SageMaker训练与部署的步骤; (4)Amazon SageMaker从ECR中加载docker image与Amazon S3中的数据进行训练; (5)训练实现后对模型进行部署,裸露供推理应用的endpoint。 2.2 前提条件  (1)本文示例所应用的区域为us-east-1;   (2)在该区域应用Ubuntu 18.04的AMI创立一台Amazon EC2,并确保与其绑定的IAM Role有AdministratorAccess权限,平安组放开8080端口供Jenkins web应用,后续章节有装置Jenkins的具体步骤;  (3)为了模仿用户的开发环境,请先在本地或近程服务器配置好git工具与y与亚马逊云科技的credentials,并确定其领有AdministratorAccess权限。 ...

December 22, 2021 · 2 min · jiezi

关于分析:在Amazon-SageMaker上快速灵活构建TensorFlow模型的在线推理服务

背景介绍当算法工程师在本地应用TensorFlow深度学习框架训练好模型后,会创立模型服务器供应用程序调用实现在线推理。因为部署自身存在肯定的复杂性,他们须要思考如何装置TensorFlow Serving相干的依赖,如何实现模型服务的高可用、申请负载平衡、A/B测试、主动伸缩机制等。Amazon SageMaker能够帮忙用户疾速创立多台模型服务器进行负载平衡,利用云上多可用区的形式实现高可用,并且在申请量变动时能够依据用户配置的策略进行主动扩大或膨胀。本文会介绍如何将本地训练好的TensorFlow模型部署到Amazon SageMaker来疾速、灵便地创立TensorFlow模型服务器。 1. TensorFlow Serving申请数据格式在将模型部署到Amazon SageMaker之前,咱们首先要理解TensorFlow Serving的SignatureDefs,它标识了保留模型时所需的承受申请函数的输出与输入,不同SignatureDefs下的申请数据格式不同。TensorFlow Serving反对gRPC API与RESTful API两种形式进行申请,本文以RESTful API的形式为例。 SignatureDefs:https://www.tensorflow.org/tf...1.1 Classify与Regress APIClassify与Regress 的SignatureDefs别离反对分类与回归的TersorFlow Serving结构化调用形式。即当Serving的输出函数封装了tf.Example(一种灵便的音讯类型,示意{“string”: value}的映射,罕用来进行训练过程中的数据流式传输或解析feature_column中的特色列),须要调用该API进行推理。 参考以下代码,在保留模型时指定input_receiver_fn作为承受申请函数,其中定义了将feature_column解析为tf.Example音讯类型的过程,而后输出给模型进行推理。 def input_receiver_fn(features):    example_spec = tf.feature_column.make_parse_example_spec(features)    return tf.estimator.export.build_parsing_serving_input_receiver_fn(        example_spec, default_batch_size=5)model.export_savedmodel(export_dir, input_receiver_fn(features))左右滑动查看更多 在创立模型服务器后,若想对服务器进行申请失去推理后果,就须要将数据结构成Classify与Regress API所能承受的格局,如下所示: {  // Optional: serving signature to use.  // If unspecifed default serving signature is used.  "signature_name": <string>,  // Optional: Common context shared by all examples.  // Features that appear here MUST NOT appear in examples (below).  "context": {    "<feature_name3>": <value>|<list>    "<feature_name4>": <value>|<list>  },  // List of Example objects  "examples": [    {      // Example 1      "<feature_name1>": <value>|<list>,      "<feature_name2>": <value>|<list>,      ...    },    {      // Example 2      "<feature_name1>": <value>|<list>,      "<feature_name2>": <value>|<list>,      ...    }    ...  ]}1.2 Predict APIPredict SignatureDefs反对将tensor作为输出和输入,可通用于分类与回归的推理问题类型。参考以下代码,在input_receiver_fn函数中,读取到数据后结构成tensor,作为模型的输出。 def input_receiver_fn ():    feature_map = {}    for i in range(len(iris_data.CSV_COLUMN_NAMES) -1):        feature_map[iris_data.CSV_COLUMN_NAMES[i]] = tf.placeholder(            tf.float32,shape=[3],name='{}'.format(iris_data.CSV_COLUMN_NAMES[i]))    return tf.estimator.export.build_raw_serving_input_receiver_fn(feature_map)model.export_savedmodel(export_dir_base=export_dir,serving_input_receiver_fn=input_receiver_fn ())左右滑动查看更多 该状况下对模型服务器发动申请就须要应用Predict API,其所能承受的数据格式如下所示: {  // (Optional) Serving signature to use.  // If unspecifed default serving signature is used.  "signature_name": <string>,  // Input Tensors in row ("instances") or columnar ("inputs") format.  // A request can have either of them but NOT both.  "instances": <value>|<(nested)list>|<list-of-objects>  "inputs": <value>|<(nested)list>|<object>}左右滑动查看更多 1.3 在Amazon SageMaker中向Serving发送申请在Amazon SageMaker的SDK(https://sagemaker.readthedocs...)中,将上述三种不同的API封装成了三种办法,即创立好Predictor之后,根据上述不同SignatureDefs所能承受的数据格式结构申请,就能够抉择调用办法进行推理,Predict API、Classify与Regress API的调用办法如下所示: 2.将已训练好的TensorFlow模型部署到Amazon SageMaker将模型压缩打包上传到Amazon S3之后,有两种形式能够实现模型的部署。 2.1办法一:不提供inference.py脚本若不须要对申请中的数据进行前解决和后处理,就不须要提供inference.py脚本,实例化TensorFlowModel对象时只须要指定模型在Amazon S3中的地位,以及相干的role,如下所示: from sagemaker.tensorflow import TensorFlowModelmodel = TensorFlowModel(model_data='s3://mybucket/model.tar.gz', role='MySageMakerRole')predictor = model.deploy(initial_instance_count=1, instance_type='ml.c5.xlarge')左右滑动查看更多 部署实现之后,在推理时须要依据Serving所应用的SignatureDefs,将数据结构成SignatureDefs能够承受的格局,再调用相干的API进行推理。比方,若应用Classify API进行推理,则须要先将数据结构成1.1节中提到的申请格局,而后调用Predictor的classify办法,将推理数据作为参数传入,即可失去推理后果。 2.2办法二:提供inference.py脚本若须要对输出模型的数据进行前解决或对推理产生的后果进行后处理,则须要在实例化TensorFlowModel对象时提供inference.py脚本,通过entry_point参数指定,如下所示: from sagemaker.tensorflow import TensorFlowModelmodel = Model(entry_point='inference.py',              model_data='s3://mybucket/model.tar.gz',              role='MySageMakerRole')左右滑动查看更多 在inference.py的代码中须要定义两个函数,别离是input_handler与output_handler。其中input_handler首先须要对传递进来的序列化对象进行解析。比方TensorFlow Serving Predictor默认的serializer为JSONSerializer,那么在input_handler中就须要对json序列化对象解析,之后就能够对数据进行前解决操作。相似地,在推理前须要把解决好的数据转化为SignatureDefs所能承受的格局。留神,结构SignatureDefs数据格式这个过程是在input_handler中定义的,这么做的益处就是用户无需在申请Serving前实现申请数据格式的定义,让前端传入的数据更加简洁灵便。 JSONSerializer:https://sagemaker.readthedocs...同样,在失去推理后果后,能够把数据后处理过程写在output_handler函数中,通过response_centent_type指定序列化对象,将后果返回给前端。 3. 试验本试验应用曾经训练好的iris模型,展现带有inference.py和不带inference.py在Amazon SageMaker上进行模型部署的过程,并调用Classify API进行推理。实验所需环境: 应用cn-northwest-1区域;在Amazon SageMaker中创立一台Jupyter Notebook实例,创立过程可参考官网文档:https://docs.aws.amazon.com/s...下载实验所需的资料:git clone https://github.com/micxyj/aws...,进入文件夹,将tf-byom.zip文件,上传至Notebook环境。试验步骤如下: 关上Notebook命令行,执行以下命令解压zip包;cd SageMaker/unzip tf-byom.zip双击关上tf_byom.ipynb笔记本文件,逐渐执行notebook中的步骤;能够看到若不提供inference.py,在进行推理前须要结构好Classify SignatureDefs所能承受的数据格式,如下图key为examples的字典: Amazon SageMaker SDK会把推理数据进行序列化传递给Serving,推理实现之后会将后果反序化回前端。 ...

December 22, 2021 · 1 min · jiezi

关于分析:Amazon-Timestream-在车联网场景的典型应用和性能测试

在工业物联网以及互联网等场景中,经常会产生大量的带工夫标签的数据,被称为工夫序列数据。这些数据的典型特点为:产生频率快(每一个监测点一秒钟内可产生多条数据)、重大依赖于采集工夫(每一条数据均要求对应惟一的工夫)、测点多信息量大(实时监测零碎有成千上万的监测点,监测点每秒钟都产生数据,每天轻松产生几十 GB 甚至更多的数据量)。例如,生产制作、电力、化工等行业,须要实时监测,查看并剖析海量设施所采集和产生的数据;车联网以及电动汽车也会产生海量数据用于行车安全监控,车辆设施状态监控;互联网利用运行状况的监控、实时点击流数据的收集以及剖析等等。 工夫序列数据的这些特点,使得传统的关系型数据库无奈提供高效存储、疾速扩大以及疾速解决的能力。工夫序列数据库因而应运而生,它采纳非凡的存储形式,专门针对工夫序列化数据做了优化,极大进步了工夫相干数据的解决能力,绝对于关系型数据库,它的存储空间减半,查问速度失去显著进步。 Amazon Timestream是一种疾速、可扩大的全托管、无服务器工夫序列数据库服务,借助Amazon Timestream,您能够每天轻松存储和剖析数万亿个事件。其次要劣势为: 高性能、低成本:相比传统关系型数据库,其速度晋升了1000倍,而老本仅为十分之一。无服务器:主动缩放以调整容量和性能,使得您只须要专一于应用程序的构建,而无需治理底层基础设施。生命周期治理:依据您事后设置好的生命周期策略,Amazon Timestream能够主动实现将近期数据保留在内存层,而将历史数据挪动到老本优化的磁性存储层,帮忙您节俭治理时序数据库的工夫以及老本。简略高效查问:无需在查问中显式指定数据是保留在内存中还是老本优化层中,Amazon Timestream的查问引擎可用于对立的拜访和剖析近期数据和历史数据。此文将利用一个车联网行车监控上报时序数据的模型,探讨Amazon Timestream如何通过流式办法注入行车数据以及在不同数据量下的的扩展性以及查问性能体现。构造上分为数据模型、Amazon Timestream端到端测试、性能体现三个局部,如果心愿间接看性能评测后果,能够间接跳到性能体现当中查看论断。 数据模型场景介绍 咱们选取一个车联网行车监控的典型场景,汽车实时监测数据会以时序数据的模式,流式的上传并存储到Amazon Timestream中,由不同的数据使用者、不同的应用程序做不同类型的SQL查问。 应用Amazon Timestream,能够无效解决车联网利用的若干痛点。 数据无奈牢靠地收集或传输,并且数据之间存在间隙或者乱序。须要对多个数据系列执行不同的剖析,这些数据系列无奈以雷同的速率(频率)生成数据或以雷同的速率生成数据但不同步。数据的工夫心跳粒度可能从秒级到分钟,小时不等。须要计算并思考数据在不同时间段内的统计值,例如平均值,标准偏差,百分位数和排名。须要以可变的粒度级别检索数据,例如特定剖析时间轴中的缩放:降采样和随机采样的要求。每辆车的每次上报,都蕴含工夫戳,设施根本属性(ID等信息),以及不同维度的属性值(温度,速度等)。数据 Schema 如下表所示。 data = { "vin": vin,  # 车架号,VIN = 'vin-' + str(rand_n(14))   "event_time": str(datetime.datetime.now()),   # 工夫戳 timestamp "trip_id": trip_id,    # 行程标识  "PressureLevel": random.choice(['LOW', 'NORMAL', 'HIGH']),  # 压力值程度 "Systolic": random.randint(50, 80),  # 某参数值 "Diastolic": random.randint(30, 50),   # 某参数值 "temp": random.randint(0, 1000),   # 温度 "powertrainState": DOUBLE,  # 能源总成状态 "ignition_state": DOUBLE,   # 点火状态 "bms_soc2":DOUBLE,  # 排放值 "odo":DOUBLE,   # 里程数 "speed":DOUBLE, # 速度数 "gear":DOUBLE,  # 变速器 "engine_rpm":DOUBLE  # 发动机转速}Amazon Timestream建模 在建模之前,咱们先理解一下Amazon Timestream中的一些基本概念。 Time series工夫序列:在一段时间范畴内,记录的一个或者多个数据点(也就是 records)序列。比方一个短时间的股价,一个短时间的CPU或内存利用率,以及一段时间Iot传感器的温度压力值等。Record记录: 在工夫序列当中的一个数据点。 Dimension: 工夫序列当中的一个mete-data属性值。蕴含 dimension 的key值以及理论值。比方对于Iot传感器,常见的 dimension name为设施ID,dimension value为12345。Measure:record当中理论被测量的值。比方一个设施的理论温度或者湿度。Measure蕴含measure names(相当于为key值)以及 measure values。Timestamp工夫戳:  表明测量值是在哪个工夫点被测量的。Table:存储工夫序列的表Database:数据库依据定义,咱们对上述schema当中的 key 做一个分类,将反馈设施根本状况类的信息归类到DIMENSION里,将理论须要上报的值归类为MEASURE类,建模如下: Amazon Timestream 测试测试目标 为了验证Amazon Timestream数据库能够反对车联网实时数据监控和查问,咱们设计了针对Amazon Timestream的测试场景,其中波及端到端集成和性能测试。测试冀望验证下列场景。 数据能够通过流式注入的形式写入Amazon Timestream数据库。数据注入速率不小于每秒1000条数据,每条数据Playload大抵在8KB左右。数据依照百万级、千万级和亿级分阶段测试,数据保留工夫为1周。超过此时间段的数据将移至数据湖中保留,数据湖数据处理不在本文探讨拜访。为了良好的老本效率,测试不同存储分层下的Amazon Timestream 的性能体现,保证数据能够平滑的在不同层级的存储中转换。测试在不同存储分层下工夫窗口内查问,聚合,跨表查问等性能。架构阐明 在此次压测中,咱们用python程序模仿物联网设施产生数据的过程,数据将实时写入到流式存储介质Amazon Kinesis Data Stream当中,通过由 Flink 构建的Amazon Timestream data connector,实时读取 kinesis 里的数据,并写入到Amazon Timestream中。 Amazon Kinesis Data Stream:https://aws.amazon.com/cn/kin...Amazon Timestream data connector:https://docs.aws.amazon.com/z...压测步骤 ...

December 22, 2021 · 1 min · jiezi

关于分析:使用-Amazon-Athena-做漏斗分析实现更高效的数据湖检索

在日常的业务经营过程中,管理者经常须要疾速理解业务的运行健康状况,辨认出瓶颈和问题,并制订应答的打算。要概览业务全景,咱们能够借助一些统计工具。「漏斗剖析」就是一种常见的工具,它很适宜多个环节按工夫程序串联的业务。 现实生活中,很多业务都是多环节串联。比方电商用户可能会浏览举荐的物品、比价、退出购物车、下单购买、评估;再比方培训机构的客户可能会看到广告、征询、试课、购买、正式上课、续费。 对于这类业务,咱们能够把触达每个环节的人数统计进去,并造成一个逐步递加的「漏斗」,就能看到每个环节的转化状况,定位到目前转化次要是卡在哪个步骤,再针对这个步骤补充定质的调研来确定解决方案。 在这篇文章中,咱们将应用 Amazon Athena 来编写这样的一个漏斗剖析工具,把一系列的时序数据(拜访日志)转化成为每个环节的数量,再把数量转化成递加的漏斗。除了展现最终成果之外,我也会展现整个设计过程,帮忙读者调整、设计本人的 SQL 语句。   09.09-09.14亚马逊云科技中国峰会线上峰会正在炽热进行中!想要理解更多亚马逊云科技最新技术公布和实际翻新,点击图片报名吧~ Amazon Athena 介绍Amazon Athena 是数据湖查问服务。它让用户能够应用 SQL 语句对存在 Amazon S3 上的半结构化数据(JSON、CSV、Parquet 等)进行查问。此外,它还是无服务器的服务,这意味着用户无需关怀底层硬件资源,仅依照扫描数据的数量来进行免费。不扫描则没有其余闲置费用。 Amazon Athena 是基于 Presto 实现的。用户能够应用 Presto 的 SQL 语法和局部内置函数进行查问。 基于 Presto 实现https://docs.aws.amazon.com/a...漏斗剖析介绍接下来咱们来看漏斗剖析。 在本文中,「漏斗剖析」指的是:统计触达业务流程上每个关键环节的用户人数,并剖析每个步骤的留存、转化、跳出率,以找到转化瓶颈。 漏斗剖析蕴含的输出如下: 剖析者关怀的事件门路。比方咱们关怀「注册、浏览、下单」,那用户必须严格依照这个程序来执行每个环节;例如:用户能够只执行「注册」,算走了 1 步,或者执行「注册、浏览」,算走了 2 步,但「注册、搜寻、下单」只能算走了 1 步,因为「搜寻」不在咱们关怀的门路内,从而打断了漏斗。漏斗的工夫区间。比方设置为 10 天,则漏斗蕴含的环节必须在 10 天内走完,如果用户第 1 天注册了,也浏览了,然而始终到第 20 蠢才下单,那么这个也只能算走了 1 步。漏斗剖析的输入有两个: 漏斗步骤计数(FUNNEL_COUNT)。比方 A 用户走了 1 步,B 用户走了 3 步,C 用户走了 2 步,等等。漏斗人数统计(FUNNEL_SUM)。比方走到第 1 步的有 1000 人,这其中走到第 2 步的有 300 人,而这其中走到第 3 步的又有 50 人,等等。测试数据筹备我提前准备好了测试数据。数据结构如下: ...

December 22, 2021 · 2 min · jiezi

关于分析:使用Amazon-RDS-for-Oracle配合Oracle-Active-Data-Guard建立托管的灾难恢复与只读副本

泛滥亚马逊云科技用户都在应用Amazon关系数据库服务产品组合(Amazon Relational Database Service,简称Amazon RDS)来缩小惨重繁琐且无差异化的数据库日常保护工作。其中Amazon RDS for Oracle也切实帮忙用户显著缩小了Oracle数据库的治理与保护累赘。 Amazon RDS for Oracle提供多可用区部署计划,可针对特定区域内的数据库实例提供更杰出的可用性与持久性,同时带来高效劫难复原解决方案。当然,一部分运行要害工作数据库的客户心愿本人的劫难复原配置可能逾越多个区域,以满足非凡的业务需要。此外,这些客户还心愿利用劫难复原的投资来解决某些只读生产工作负载。 当初,大家曾经能够任选以下办法,为您的Amazon RDS for Oracle建设起自我管理型劫难复原解决方案: 1.应用数据库快照为Amazon RDS for Oracle建设起低成本、跨区域的劫难复原计划。对于更多详细信息,请参阅应用数据库快照与Amazon Lambda在Amazon RDS for Oracle上建设跨区域主动劫难复原机制。 2.应用亚马逊云科技 数据库迁徙服务(Amazon Database Migration Service,简称Amazon DMS)为Amazon RDS for Oracle建设劫难复原机制。对于更多详细信息,请参阅应用Amazon DMS在Amazon RDS for Oracle上建设劫难复原机制。 3.应用Oracle GoldenGate在Amazon RDS for Oracle上部署跨区域劫难复原机制。对于更多详细信息,请参阅应用Oracle GoldenGate在Amazon RDS for Oracle上实现跨区域劫难复原机制。 应用数据库快照与Amazon Lambda在Amazon RDS for Oracle上建设跨区域主动劫难复原机制https://aws.amazon.com/cn/blo...应用Amazon DMS在Amazon RDS for Oracle上建设劫难复原机制https://aws.amazon.com/cn/blo...应用Oracle GoldenGate在Amazon RDS for Oracle上实现跨区域劫难复原机制https://aws.amazon.com/cn/blo...借助Amazon RDS for Oracle区域内与跨区域只读正本性能,咱们能够应用Oracle Active Data Guard轻松创立多个只读正本。本文将探讨如何应用Amazon RDS for Oracle只读正本建设托管劫难复原与只读正本。此外,本文还将涵盖其余用例,例如如何从主数据库实例中转移读取工作负载、通过只读正本服务扩大读取工作负载,以及优化读取提早等。 ...

December 22, 2021 · 2 min · jiezi

关于分析:面对持续不断生成的流数据-Amazon-Kinesis-Data-Analytics-实现及时分析与处理

Amazon Kinesis Data Analytics介绍现在各种企业每天都在面对继续一直生成的数据须要解决,这些数据可能来自挪动或 Web 应用程序生成的日志文件、网上购物数据、游戏玩家流动、社交网站信息或者是金融交易等。可能及时地解决并剖析这些流数据对企业来说至关重要,通过良好的流数据处理和利用,企业能够疾速做出业务决策,改良产品或服务的品质,晋升用户的满意度。 目前,市面上曾经有很多工具能够帮忙企业实现流数据的解决和剖析。其中,Apache Flink是一个用于解决数据流的风行框架和引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。 Apache Flinkhttps://flink.apache.org图片来自Apache Flink官网 Amazon Kinesis Data Analytics 是疾速应用 Apache Flink 实时转换和剖析流数据的简略办法,通过无服务器架构实现流数据的解决和剖析。借助Amazon Kinesis Data Analytics,您能够应用基于Apache Flink的开源库构建Java、Scala以及Python应用程序。 Amazon Kinesis Data Analytics为您的Apache Flink应用程序提供底层基础设施,其外围性能包含提供计算资源、并行计算、主动伸缩和应用程序备份(以检查点和快照的模式实现)。您能够应用高级Flink编程个性(如操作符、函数、源和接收器等),就像您本人在托管Flink基础设施时应用它们一样。   想要理解更多亚马逊云科技最新技术公布和实际翻新,敬请关注2021亚马逊云科技中国峰会!点击图片报名吧~ 在Amazon Kinesis Data Analytics应用PythonAmazon Kinesis Data Analytics for Apache Flink 当初反对应用 Python 3.7 构建流数据分析应用程序。这使您可能以 Python 语言在 Amazon Kinesis Data Analytics 上通过 Apache Flink v1.11 运行大数据分析,对Python语言开发者来说十分不便。Apache Flink v1.11 通过PyFlink Table API 提供对 Python 的反对,这是一个对立的关系型 API。 图片来自Apache Flink官网 此外,Apache Flink还提供了一个用于细粒度管制状态和工夫的DataStream API,并且从Apache Flink 1.12版本开始就反对Python DataStream API。无关Apache Flink中API的更多信息,请参阅Flink官网介绍。 ...

December 22, 2021 · 2 min · jiezi

关于分析:轻松搭建数据仓库与FreeWheel一起玩转Amazon-EMR

Amazon Elastic MapReduce(Amazon EMR)是Amazon Web Services提供的托管集群平台,用户能够十分不便的应用Amazon EMR搭建起一套集群,用来撑持大数据框架的利用,如Apache Spark,Hive,Flink,Presto等等。因为Amazon EMR具备很好的可配置性和伸缩性,使用者能够灵便的依据本人的需要进行定制,在满足生产需要的同时,减低对基础设施的运维老本。 FreeWheel大数据团队在搭建数据仓库的过程中,在Amazon EMR的应用上积攒了大量的实际和运维教训,本文将从Amazon EMR实际的角度登程,讲述FreeWheel Transformer团队在搭建ETL pipeline的过程中是如何玩转Amazon EMR的,以期抛砖引玉。 后盾回复"FreeWheel",更多精彩内容等着你   想要理解更多亚马逊云科技最新技术公布和实际翻新,敬请关注2021亚马逊云科技中国峰会!点击图片报名吧~ 一个典型的Spark on Amazon EMR上集群架构概览咱们先来理解一下一个典型的Amazon EMR集群是什么样子的。Amazon EMR默认应用了Yarn来治理集群资源。Amazon EMR将node分为了Master,Core和Task三个组(通过Yarn label实现)。 主节点(Master node) Amazon EMR的Master node用来治理整个集群,集群至多要有一个Master node(从Amazon EMR-5.23开始,如果须要Master node HA,能够抉择实例计数为3,此时依据不同的利用,会有不同的HA计划)。 以运行Hadoop HDFS和Yarn为例,Master上会运行Yarn ResourceManger和HDFS NameNode。在高可用计划下,Yarn ResourceManager会在所有三个主节点上运行,并采纳Active/Standby模式进行工作。如果ResourceManager的主节点产生故障,Amazon EMR将启动主动故障转移过程,具备Standby ResourceManager的Master node将接管所有操作,能够通过yarn rmadmin-getAllServiceState 来获取以后服务状态。对于Yarn ResourceManger HA的具体细节,能够参考ResourceManager HA。 与ResourceManager相似,NodeManager会在三个主节点中的两个节点上运行,别离处于Active和Standby状态。如果Active NameNode的主节点产生故障,Amazon EMR会将启动HDFS故障转移过程。此时 Standby状态的NameNode将变为Active并接管集群中的所有对HDFS的操作。咱们能够通过hdfs haadmin-getAllServiceState命令来获取以后NameNode状态。对于HDFS HA的具体细节,能够参考HDFS HA。 ResourceManager HAhttps://hadoop.apache.org/doc...HDFS HAhttps://hadoop.apache.org/doc...外围节点(Core node) Core node为可选组,其上运行了HDFS DataNode。当Core node个数少于4时,Amazon EMR默认会将HDFS的replica设置为1,Core node少于10个时replica为2,其余状况为3。如果须要进行自定义设置,能够批改启动Amazon EMR对hdfs-site.xml中dfs.replication的配置;这里要留神一点,如果咱们在一个曾经启动的Amazon EMR中,在对Core node进行伸缩的时候,会影响到HDFS数据的re-balance,这是一个耗时的操作,不倡议频繁做Core node的scaling。而且对于replica是3的集群,如果将core node的个数缩减为少于3个的话,也将无奈胜利。 ...

December 21, 2021 · 2 min · jiezi

关于分析:通用数据保护条例的监管下你的数据湖断舍离了吗

通用数据保护条例(GDPR)是当今技术世界中的重要法规,也是泛滥在亚马逊云科技私有云当中建设解决方案的用户们所必须遵循的数据处理要求。GDPR中提出一项“删除权”,或者叫“被忘记权”条款,要求通过施行相干解决方案保障删除特定用户的集体数据。 在亚马逊云科技大数据与剖析生态系统的背景之下,每一套架构,无论其面向怎么的指标,都须要应用Amazon Simple Storage Service(Amazon S3)作为外围存储服务。只管Amazon S3领有丰盛的性能选项与完整性,但却短少一种开箱即用的机制将用户标识符同蕴含用户数据的Amazon S3对象映射起来。 在本文中,咱们将介绍一套框架,帮忙革除您组织中的亚马逊云科技托管数据湖内的各特定用户数据。此外,咱们还将独特理解一套由多种不同亚马逊云科技存储层形成的剖析解决方案,以及针对Amazon S3的示例代码。 Amazon Simple Storage Servicehttps://aws.amazon.com/cn/s3/   想要理解更多数据湖仓的相干常识?敬请关注亚马逊云科技中国峰会北京站的大数据与智能湖仓分论坛!更多最新技术公布和实际翻新的内容尽在8.19-20北京、9.15深圳分会,快来点击图片报名吧~ 参考架构为了解决数据革除框架施行中的种种挑战,咱们在这里将问题简化为一个简略用例,即如何在应用亚马逊云科技作为数据管道的平台当中实现用户数据删除。下图阐明了用例的根本状况。 咱们引入了建设并保护索引元存储库的想法,该存储库可能跟踪每位用户的记录地位,帮忙咱们高效找出这些地位,从而放大搜寻空间。 您能够应用以下架构,在组织的亚马逊云科技数据湖内删除特定用户的数据。 对于此初始版本,咱们创立了三个用户流,这些用户流负责将各项任务与适合的亚马逊云科技服务映射起来: 用户流1:实时元数据存储更新 Amazon S3 ObjectCreated或ObjectDelete事件会触发一项Amazon Lambda函数,此函数将解析对象并执行增加/更新/删除操作,以使元数据索引放弃最新。您也能够为任意其余存储层建设相似的简略工作流,具体包含Amazon Relational Database Service(RDS),Amazon Aurora或Amazon Elasticsearch Service(ES)。在本示例中,咱们应用Amazon DynamoDB与Amazon RDS for PostgreSQL作为索引元数据存储选项,这里应用的具体方法宽泛实用于其余技术场景。 Amazon Relational Database Servicehttps://aws.amazon.com/cn/rds/Amazon Aurorahttps://aws.amazon.com/cn/rds...Amazon Elasticsearch Servicehttps://aws.amazon.com/cn/ela...Amazon DynamoDBhttps://aws.amazon.com/cn/dyn...Amazon RDS for PostgreSQLhttps://aws.amazon.com/cn/rds...用户流2:革除数据 当用户要求删除其数据时,咱们会通过Amazon CloudWatch触发一个Amazon Step Functions状态机来协调工作流。第一步是触发Lambda函数,由该函数查问元数据以辨认出蕴含用户记录的存储层,并将生成的报告保留在Amazon S3报告存储桶内。接下来,由基于Lambda Node JS的工作节点创立并获取Amazon Step Functions流动,并通过Amazon Simple Email Service(SES)将带有批准及回绝链接的电子邮件发送给审核人员。 Amazon Simple Email Servicehttps://aws.amazon.com/cn/ses/下图所示为亚马逊云科技管理控制台上显示的Amazon Step Functions状态机根本架构。 审核人员从两条链接中抉择其一,而后调用Amazon API Gateway端点,由该端点调用Amazon Step Functions以复原工作流。如果抉择批准链接,则Amazon Step Functions将触发一项Lambda函数,此函数将存储桶内的报告作为输出,据此删除存储层内的对象或记录,而后更新索引元存储库。在革除作业实现之后,Amazon Simple Notification Service(SNS)会向用户发送操作胜利或失败的告诉邮件。 ...

December 21, 2021 · 1 min · jiezi

关于分析:Amazon-Redshift-ML现已正式推出使用SQL创建机器学习模型并通过您的数据进行预测

借助 Amazon Redshift,您能够应用SQL在您的数据仓库、操作数据库和数据湖中查问和合并数EB的结构化和半结构化数据。当初,AQUA(高级查问加速器)已全面推出,您能够将您的查问性能最高进步 10 倍,而无需额定的费用和代码更改。事实上,Amazon Redshift提供比其余云数据仓库高出三倍的性价比。 Amazon Redshifthttps://aws.amazon.com/redshift/操作数据库https://aws.amazon.com/blogs/...数据湖https://docs.aws.amazon.com/r...半结构化https://aws.amazon.com/blogs/...AQUA(高级查问加速器)https://aws.amazon.com/blogs/...高出三倍的性价比https://aws.amazon.com/blogs/...然而,如果您想更进一步,解决这些数据以训练机器学习(ML)模型并应用这些模型从仓库中的数据生成见解,该怎么办?例如,要施行预测支出、预测客户散失和检测异样等应用案例?过来,您须要将训练数据从Amazon Redshift导出到Amazon Simple Storage Service(Amazon S3)存储桶,而后配置并开始机器学习训练过程(例如,应用 Amazon SageMaker)。这个过程须要许多不同的技能,通常须要多个人才能实现。咱们能将这个过程简化吗? Amazon Simple Storage Service(Amazon S3)https://aws.amazon.com/s3/Amazon SageMakerhttps://aws.amazon.com/sagema... 想要理解更多亚马逊云科技最新技术公布和实际翻新,敬请关注在上海、北京、深圳三地举办的2021亚马逊云科技中国峰会!点击图片报名吧~ 近期,Amazon Redshift ML已正式推出,可帮忙您间接从 Amazon Redshift 集群创立、训练和部署机器学习模型。要创立机器学习模型,您能够应用简略的 SQL查问来指定要用于训练模型的数据以及要预测的输入值。例如,要创立预测市场营销流动成功率的模型,您能够通过抉择蕴含客户配置文件和以前营销流动后果的列(在一个或多个表格中)来定义输出,以及您想预测的输入列。在此示例中,输入列能够是显示客户是否对流动体现出趣味的列。 Amazon Redshift MLhttps://aws.amazon.com/redshi...运行SQL命令创立模型后,Amazon Redshift ML会将指定的数据从Amazon Redshift中平安地导出到Amazon S3存储桶,并调用Amazon SageMaker Autopilot来筹备数据(预处理和特色工程),而后抉择适当的预构建算法,并将该算法利用于模型训练。您能够选择性地指定要应用的算法,例如XGBoost。 Amazon SageMaker Autopilothttps://aws.amazon.com/sagema...XGBoosthttps://docs.aws.amazon.com/s... Amazon Redshift ML解决Amazon Redshift、Amazon S3与Amazon SageMaker之间的所有交互,包含训练和编译中波及的所有步骤。模型训练实现后,Amazon Redshift ML应用Amazon SageMaker Neo来优化模型以进行部署,并将其作为SQL函数提供。您能够应用SQL函数将机器学习模型利用于查问、报告和控制面板中的数据。 Amazon SageMaker Neohttps://aws.amazon.com/sagema...Amazon Redshift ML当初包含许多在预览期间未提供的新性能,包含Amazon Virtual Private Cloud(VPC)反对。例如: Amazon Virtual Private Cloud(VPC)https://aws.amazon.com/vpc/当初,您能够将Amazon SageMaker模型导入您的 Amazon Redshift 集群中(本地推理)。 Amazon SageMaker模型https://docs.aws.amazon.com/r... 您还能够创立应用现有Amazon SageMaker终端节点进行预测SQL函数(近程推理)。在这种状况下,Amazon Redshift ML正在批处理对终端节点的调用以放慢处理速度。 ...

December 21, 2021 · 2 min · jiezi

关于分析:推出Amazon-Kinesis-Data-Analytics-Studio-与流数据快速交互

及时取得见解并对从您的企业和应用程序接管的新信息做出快速反应的最佳形式是剖析流数据。这些数据通常必须按程序和以增量形式按记录或者通过滑动工夫窗口进行解决,并且可用于各种剖析,包含关联、聚合、筛选和采样。 流数据https://aws.amazon.com/stream...为了更轻松地剖析流数据,最近,咱们非常高兴推出 Amazon Kinesis Data Analytics Studio。 当初,通过 Amazon Kinesis 控制台,您能够抉择 Kinesis 数据流,并且只需单击一下即可启动由 Apache Zeppelin 和 Apache Flink 提供反对的 Kinesis Data Analytics Studio 笔记本,以便交互式剖析流中的数据。同样,您能够在 Amazon Managed Streaming for Apache Kafka 控制台中抉择集群,以启动笔记本来剖析 Apache Kafka 流中的数据。您还能够从 Kinesis Data Analytics Studio 控制台中启动笔记本并连贯到自定义源。 Amazon Kinesis Data Analytics Studiohttps://aws.amazon.com/kinesi...Amazon Kinesis 控制台https://console.aws.amazon.co...Kinesis 数据流https://aws.amazon.com/kinesi...Apache Zeppelinhttps://zeppelin.apache.org/Apache Flinkhttps://flink.apache.org/Amazon Managed Streaming for Apache Kafka https://aws.amazon.com/msk/控制台https://console.aws.amazon.co...Apache Kafkahttps://kafka.apache.org/Kinesis Data Analytics Studio 控制台https://console.aws.amazon.co...在笔记本中,您能够应用 SQL 查问和 Python 或 Scala 程序与流数据交互并立刻取得后果。如果您对后果称心,则只需单击几下,您即可将代码晋升至大规模、牢靠运行地生产流解决应用程序,无需额定的开发工作。 想要理解更多亚马逊云科技最新技术公布和实际翻新,敬请关注在上海、北京、深圳三地举办的2021亚马逊云科技中国峰会!点击图片报名吧~ 对于新我的项目,咱们建议您应用新的 Kinesis Data Analytics Studio,而不是 Kinesis Data Analytics for SQL 应用程序。Kinesis Data Analytics Studio 将易用性和高级剖析性能相结合,这使得能够在几分钟内疾速构建简单的流解决应用程序。咱们来看看这些步骤的实际操作。 ...

December 21, 2021 · 2 min · jiezi

关于分析:手把手教程|通过部署-Apache-Superset-实现-Amazon-S3-的数据可视化

为了让数据挖掘和数据查问可能更加普世化,惠及更多的想应用数据的但不足SQL能力的个别数据消费者,各类数据可视化工具应运而生,像Amazon Quicksight就是这样一款产品。目前亚马逊云科技中国区Amazon Quicksight还没有上线,开源界也有不少好用的可视化我的项目,Apache Superset就是其中之一。 本篇推送会带您一步一步地在亚马逊云科技上部署Apache Superset并在Superset上创立一个展现新冠肺炎状况的Dashboard(示例如下)。新冠肺炎数据存储于Amazon S3上并通过Amazon Athena来间接查问。 Apache Superset基本功能: 反对多种图表类型和数据源类型反对通过可视化的形式进行数据摸索并一键生成展现看板,并提供数据下载性能反对报表分享和简单的权限治理反对间接写SQL构建基于原始数据的逻辑虚构层 筹备好咱们就开始吧,以下步骤基于亚马逊云科技宁夏区域! 步骤1 应用docker部署Apache Superset本步骤论述了如何在Amazon Linux环境中部署Superset,并且在宁夏区域曾经筹备好了一个专用的Superset AMI环境。这个AMI中蕴含了所有下述步骤创立的Superset报表和所需数据,如果间接应用此AMI的话能够跳过步骤1,AMI 名字 为Amazon-Demo-Superset-Covid19,能够在宁夏区Amazon EC2 私有映像中找到。登录的用户名明码默认都是admin,默认的Web端口是8088。 留神:此AMI仅供本博客教学演示应用,非官方认证AMI请勿间接用于生产环境。 1.1  启动一台Amazon Linux EC2并装置启动docker环境,须要机型为t.xlarge及以上,EBS盘20GB以上。 sudo yum update -y# install python3 gccsudo yum install -y python3 libpq-dev python3-devsudo yum install -y gcc gcc-c++# add following into ~/.bashrcecho "export PATH=/usr/local/bin:$PATH" >> ~/.bashrcecho "alias python=python3" >> ~/.bashrcecho "alias pip=pip3" >> ~/.bashrcsource ~/.bashrcpython --version# install dockersudo yum -y install dockersudo usermod -a -G docker ec2-usersudo systemctl start dockersudo systemctl status dockersudo systemctl enable dockersudo chmod 666 /var/run/docker.sockdocker ps# install docker-composesudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composesudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-composedocker-compose --version1.2   下载Superset Docker文件 sudo yum install -y git curlgit clone https://github.com/apache/incubator-superset/1.3   批改Dockerfile装置PyAthena插件以反对Athena数据源 `cd incubator-supersetvi Dockerfile` 退出连贯Athena须要的依赖 RUN pip install PyAthenaJDBC \        && pip install PyAthena \        && pip install psycopg2从新build和启动Superset `docker-compose builddocker-compose up` 须要配置管理员用户权限,在docker/docker-init.sh中默认创立用户admin(明码也是admin)但权限并没有更新,通过以下命令更新权限 docker-compose exec superset bashsuperset init1.4   配置胜利后,Superset默认应用8088端口,应用http://<EC2 私有IP>:8088拜访,用户名和明码均为admin(留神:国内亚马逊云科技账户须要ICP备案能力拜访) 1.5   本试验应用本地存储来保留用户名和明码,如须要配置内部的数据库用来存储登录数据Docker的配置请参考GitHub文档 。https://github.com/amancevice... 另外Superset也反对LDAP或者OpenID登录,配置文件https://github.com/apache/sup... 步骤 2 配置新冠数据实时数据源本试验中的数据来源于约翰霍普金斯大学的实时更新的凋谢数据集。此S3存储桶在海内账户,如果海内账号能够参照博客,但如果国内区域的话须要同步到国内的S3桶中应用。 2.1   同步海内S3的数据源到宁夏S3 Option 1:能够应用同步工具设置源桶和指标桶来同步数据https://github.com/aws-sample... 须要同步的S3门路为s3://covid19-lake/enigma-jhu/,每个文件夹外面有json和csv两种类型的数据,抉择其一即可。此数据不足省市名字到ISO3166-2代码映射表,Superset中的城市地图须要用到。须要应用AMI (Amazon-Demo-Superset-Covid19)中的province_code_mapping数据。 Option 2: 2020-04-22号的静态数据存储在机器AMI(Amazon-Demo-Superset-Covid19)的/home/ec2-user/data/ 可应用以下命令上传到位于宁夏的S3桶中 aws s3 cp /home/ec2-user/data/ s3://<宁夏S3桶名字>/ --recursive2.2   Amazon Glue爬取S3数据生成Athena 表 配置一个Glue的爬网程序,指定宁夏S3桶数据的根目录(蕴含两张表的数据,爬虫会主动分表),并配置表前缀为covid19_ 数据库为covid19。具体操作参照官网文档。https://docs.aws.amazon.com/z... 2.3   原始数据存在一些反复值和须要丰盛的局部,能够应用Amazon Athena创立view来简略解决。如果想要把解决的后果长久化还是举荐应用Amazon Glue来做定时的ETL。创立语句如下: ...

December 21, 2021 · 1 min · jiezi

关于分析:DataWorks数据治理

企业数字化转型的挑战 DataWorks前世今生 DataWorks外围能力数据集成: 数据治理 产品计划以及案例 产品商业化以及总计

September 4, 2021 · 1 min · jiezi

关于分析:DataWorks睿智

September 4, 2021 · 0 min · jiezi

关于分析:同期群分析Cohort-Analysis-IDCF

在产品倒退过程中,咱们通常会把产品支出和产品用户总量作为掂量这个产品胜利与否的终极指标。不可否认这些指标诚然重要,然而它们并不能用来掂量产品最近所获得的胜利,并且极有可能会覆盖一些急需咱们关注的问题,如用户参与度继续走低、用户新增在逐步变缓等。在用户行为剖析的过程中,咱们须要更粗疏的掂量指标,这样才更有利于咱们精确预测产品倒退的走向并通过版本迭代及时对产品进行优化和改良。 这是精益守业外面的翻新核算所提倡的关键点。 基本概念同期群剖析(Cohort Analysis)的次要目标是剖析类似群体随工夫的变动,用户行为的变化趋势。 什么是同期群?雷同工夫内具备类似或特定属性 /行为的群体。(工夫+特定属性) 例1:将70年代出世的人划分为一个群组 例2:将5月1日~5月7日的注册用户划分为一个群组 什么是同期群剖析?将用户进行同期群划分后,比照不同 同期群组用户的雷同指标就叫同期群剖析(不同同期群+雷同指标) 例1: 70年代出世的人的每日手机应用频率 80年代出世的人的每日手机应用频率 90年代出世的人的每日手机应用频率 例2: 5月1日~5月7日的注册用户的次日留存 5月8日~5月15日的注册用户的次日留存 5月16日~5月23日的注册用户的次日留存 同期群剖析示例咱们先将用户按初始行为的产生工夫进行划分为群组(即同期群),能够看到对处于雷同生命周期阶段的用户进行垂直剖析后(横向比拟),随工夫的变动,用户的应用频率在逐步升高。 某APP进步用户留存案例某APP针对首次启动APP的用户进行同期群剖析,并察看他们接下来七天的留存状况。 图一:某电商APP新增用户7日留存率 17461个新增用户在10月30日首次启动了APP,第一天在这些用户里有 30.6%的人再次启动,第四天12.2%,第七天7.9%,这表明在第七天的时候约每12个用户里就只剩下一个沉闷用户。这同时也意味着他们散失了92%的用户。咱们须要晓得哪些同期群有更好的留存并剖析起因。如:他们在那一天发动了一场新的营销流动吗? 还是提供了促销或折扣?或是公布了新性能,在产品里增加了视频教程?他们能够将这些胜利的策略利用于其余用户,来进步用户活跃度及留存率。 咱们还能够比拟不同时间段的留存: 拉新后的留存:通过比拟拉新后不同的同期群,咱们能够看到4天,7天等时间段后再次回来的用户。这些同期群数据能够让咱们理解用户登录体验,产品质量,用户体验,市场对产品的需要力等要害信息。= 长期留存:通过观察每个同期群用户再次回来应用APP的天数,咱们能够看到每个同期群长期的留存,而不是拉新后几天的留存。 咱们能够晓得用户是在哪里退出的,并且能够晓得沉闷用户群有什么特色,他们在做什么,这样一方面有助于咱们在拉新时疾速找到指标用户,另一方面咱们还能够影响新用户,让他们遵循同样的路线,最终成为虔诚用户的模样。通过同期群剖析能帮忙咱们实时监控实在的用户行为、掂量用户价值并制订有针对性的营销计划 例如他们的经营团队在9月份发动了一场为期60天的欢送流动,想要通过一系列折扣和优惠来推动用户增长。通过广告展现和社交媒体,他们每天都有数以千计的用户增长。5个月后,他们的用户增长量十分大,领导对他们的流动后果十分称心。 外表看,他们顺利达到了用户增长的指标。然而,当咱们认真钻研同期群的数据,从用户的一生价值登程,咱们会发现,欢送流动中新增的用户在流动2个月之后购买率继续升高,与之相同,流动前的新增用户如8月份的用户,在流动的这五个月里购买率始终比较稳定。 图二:某APP用户购买状况 如果咱们只把每月总收入作为掂量指标,咱们就会认为支出增长仅仅来自新涌入的用户。然而,流动启动之后的用户群组数据表明,一旦优惠活动完结,支出就会降落。支出降落证实他们并没有扩充忠诚用户群体。 如上所示,通过同期群剖析咱们能够实时监控实在的用户行为趋势,否则,咱们会因为只剖析总体数据失去谬误的判断而做出谬误的决策。通过剖析每个同期群的行为差别,咱们能够制订有针对性的营销计划。 在这个案例中,经营人员须要制订新策略来进步流动开始两个月后的用户参与度。 同期群剖析常用工具 - 用户留存表做同期群剖析,最罕用的工具是用户留存表,也就是后面例子中的表格。用户留存剖析,是将用户的行为分为: 初始行为:如“首次关上利用”、“胜利注册”或“第一次购买”;留存行为:能够是用户的任意一种行为,或某个特定的行为(如“购买”,或“分享到社交网络”);通过将用户按初始行为的产生工夫分组(失去同期群),而后再统计初始行为工夫后不同时段内留存行为的产生频次(或时长,或其余有意义的计量,比方生产金额),制成表格就失去了用户留存表。 不过,在进行用户留存剖析时,有个十分重要的问题要留神,即: 不是用户的所有应用行为都对产品有价值。 剖析用户留存,肯定要找到价值行为,剖析用户的价值留存,才会对产品改良产生更大的帮忙。 具体来说,就是如何定义留存行为。如果不能实在的反映出用户的应用与产品的理论经营情况之间的关系,就可能会造成一片凋敝假象,导致产品改良走向“叫好不叫座”的误区。 基于用户生命周期进行同期群剖析理解了同期群剖析概念后,咱们须要基于产品用户生命周期进行同期群剖析 什么是用户生命周期?以微博为例: 【初期应用阶段】用户刚开始应用微博时,对性能不相熟,关注和粉丝都很少,能取得到的有价值内容无限,因而应用频率较低,互动(评论、点赞)和发微博的行为很少。【频繁应用阶段】随着时间推移,用户逐步建设起了本人的关系网络,并且关注了很多感兴趣的博主,这时用户应用微博的频率十分高,每天花大量的工夫在浏览、评论、回复、发微博上。【趣味升高阶段】工夫的脚步向前不停,用户逐步发现每天花在微博上的工夫太多了,而且每天看来看去就是那些内容,逐步产生了腻烦(趣味丢失),恰好这时,很多其余乏味的利用如雨后春笋般展露,吸引并占用了用户的不少工夫(趣味转移),用户应用微博的工夫缩小了很多,而且发微博、评论也不那么及时了。【趣味丢失阶段】再起初,用户对微博曾经没有新鲜感,趣味已根本丢失,可能隔很多蠢才偶然关上一次(甚至不再关上),而且根本不再发新微博。【散失阶段】再再起初,彻底不必了对于微博来说,用户从初期应用、频繁应用,到趣味升高、趣味丢失,到齐全不必,就是用户的生命周期。 通过产品用户的生命周期分为若干个阶段,每个阶段均匀多长时间,剖析理论用户的行为,进而采取不同的经营策略。 小结同期群剖析(Cohort Analysis)有利于咱们更深层地剖析用户行为,并揭示总体掂量指标所覆盖的问题。在营销形式和流动成果一直变动的当下,学会使用同期群剖析有利于咱们预测将来支出和产品发展趋势。 IDCF DevOps黑客马拉松 9月11-12日,上海站,11月20-21日,深圳站,企业组队参赛&集体参赛均可,一年等一回,错过等一年,连忙上车~公众号回复“黑马”退出

August 16, 2021 · 1 min · jiezi

关于分析:慕课人人都能学会数据分析

数据(data)是事实或察看的后果,是对客观事物的逻辑演绎,是用于示意客观事物的未经加工的原始素材。数据能够是间断的值,比方声音、图像,称为模仿数据;也能够是离散的,如符号、文字,称为数字数据。在计算机系统中,数据以二进制信息单元0、1的模式示意。中文名数据外文名data释义事实或察看的后果性质计算机术语意义信息的表现形式和载体数据中台丨从0到1,原阿里数据中台团队撰写8012播放疾速导航数据的语义分类定义数据数据是指对主观事件进行记录并能够甄别的符号,是对客观事物的性质、状态以及互相关系等进行记录的物理符

December 25, 2020 · 1 min · jiezi

关于分析:多维分析的本质计算是什么能做什么又不能做什么

多维分析次要面向业务用户提供数据查问剖析服务,因为业务人员不懂 SQL,也无奈实现多表关联(有意义的查问常常是基于多表的),所以在多维分析建模阶段须要将多表转换成单表,也就是 CUBE。这样用户就能够很不便地通过基于一个后果集(CUBE)进行拖拽查问,从不同的角度(维度)察看数据(测度)。 在多维分析中次要的计算就是依照某一个或一些维度汇总测度,如按地区汇总销售额,按年和产品汇总销量等。从运算角度来看,多维分析的实质计算就是: 基于一个表的分组汇总如果用 SQL 来表白,多维分析的实质就是: SELECT D,…, SUM(M), … FROM C WHERE D’=d’ AND … GROUP BY D,…即对数据立方体按某些维度分组汇总某些测度。其中 C 是数据立方体,D,…是选出维度,M,…是聚合测度,聚合函数也能够不是 SUM。D’是切片维度,切块时条件为 D IN (d,…),WHERE 中还能够减少针对某些测度的条件,个别也就是选出某个区间内的值。 针对一个后果集(CUBE),多维分析能够进行切片 / 切块、旋转、钻取 / 上卷等操作。 1. 切片 切片是指针对 CUBE,抉择维中固定值进行剖析,比方固定工夫维度剖析地区和产品的销量状况。 2. 旋转 旋转也称行列变换,是指维度从行到列或者从列到行,旋转是为了满足用户察看数据的不同习惯。 3. 钻取 钻取是从粗粒度到细粒度察看数据的过程,比方咱们发现某个汇总值出现异常,就能够通过钻取查看明细数据,找到异样起因。钻取能够从汇总到明细,从下级到上级… 从多维分析的实质及其操作来看,多维分析只能实现简略的分组汇总、过滤计算,这在理论业务中还远远不够。常见的固定报表业务,一些报表很难通过简略的分组聚合来实现,常常要编写上千行的 SQL 或存储过程,而且固定报表的表格款式可能很简单,这些都是多维分析无奈实现的。 这种报表数据处理逻辑简单,每个格子可能对应不同的数据起源,计算逻辑也不一样,在款式方面则会呈现表头凌乱,大格套小格,动静区域和动态区域混合的状况。 这里列举了简单报表的特点: 传说中的中国简单报表都长什么样?有什么特点? 这些类型的报表都无奈通过多维分析拖拽进去。 事实上,固定报表和自助报表(多维分析)面向的需要场景很不一样,而在 BI 零碎中往往会蕴含三局部内容,固定报表、多维分析和可视化,其中可视化能够由前两局部实现,但固定报表和多维分析往往是不可或缺的,二者相互配合,优势互补。认清了多维分析的能量圈,能力在 BI 零碎建设中对症下药,防止踩坑。 对多维分析和 BI 技术感兴趣的同学还能够搜寻“乾学院”,下面有整套的收费“商业智能”技术课程, 或者间接拜访上面链接: http://www.raqsoft.com.cn/wx/course-Business-Intelligence.html [](http://www.raqsoft.com.cn/wx/...

August 17, 2020 · 1 min · jiezi

关于分析:程序数据集上的多维分析

【摘要】 当数据源不是来自文件和 SQL,而是由程序现计算出来的,这种状况在许多 BI 零碎中都会呈现,BI 零碎本人治理数据模型,把数据库挡在前面,不会间接凋谢 SQL,更不会提供文件让你间接拜访,拜访数据都要通过程序接口(比方 JavaAPI 或 Webservice)——这样一来,想要对这些程序接口返回的后果集做多维分析看似就有些艰难了。没关系!润乾多维分析分分钟就能帮您搞定!程序数据集上的多维分析! 小编我本着先客户之忧而忧的服务主旨,思前想后还是感觉之前的《把 Excel 透视表搬到 WEB 上》和《给一句 SQL 就能做多维分析》对多维分析的介绍不太够,所以明天顺便再来唠唠如何对程序数据集做多维分析。 拜访 JavaAPIAPI是应用程序编程接口,程序凋谢API就是凋谢接口,凋谢后接口返回的程序数据就能够被其余程序调用了。 问题来了,在俺们多维分析中怎样才能对API接口返回的程序数据做剖析呢? 简略,其实是分分钟搞定的事儿! 步骤一:最最重要的前提,要麻烦程序猿自定义类,把要返回的后果集封装在一个静态方法中 本例小编本人写了个api,为办法传入txt文件门路,而后将txt内容以文本字符串返回。 test.txt文件内容: 自定义类TxtTest: package api;import java.io.*; public class TxtTest {//为不便对本办法的调用,此处需为静态方法//通过对办法传入txt文件门路和是否有题目(true/false)两个参数,将txt内容以文本字符串返回public static String readTxttoString(String pathName,boolean hasTitle){final BufferedReader bfr;final String encoding = "gbk";final File file = new File(pathName);String lineTxt=null;StringBuffer buf = new StringBuffer();InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);bfr = new BufferedReader(read);while((lineTxt=bfr.readLine())!=null){buf.append(lineTxt+"\\n");}return buf.toString();}}步骤二:将TxtTest.class文件放入WEB利用能加装到的类门路下,本例以安装包自带的demo利用为例,因而该文件可放入[装置根目录]\report\web\webapps\demo\WEB-INF\classes\api下。 步骤三:在集算器设计器中新建 txtTest.dfx,增加参数和网格内容: A1=invoke(api.TxtTest.readTxttoString,pathName,hasTitle)2=A1.import@tq()3return A1 应用invoke函数,调用步骤一中自定义JAVA类中的静态方法,并为办法传入参数。 保留后将dfx文件放至[装置根目录]\report\web\webapps\demo\WEB-INF\files\dfx目录下。至于为啥要把文件放到这儿,先卖个关子,前面再解释。 集算器用的invoke函数次要是用来调用用户自定义函数的,不仅能像下面例子这样返回字符串,还能够返回其余多种类型,不过必须应用可与集算器匹配的数据类型,否则有可能在展示或调用时呈现谬误。集算器中罕用数据类型对应的Java类型如下: 整数java.lang.Integer长整数java.lang.Long浮点数java.lang.Double长实数java.math.BigInteger实数java.lang.Number布尔型java.lang.Boolean字符串java.lang.String日期java.sql.Date工夫java.sql.Time日期工夫java.sql.TimeStamp二进制数据byte[] 步骤四:多维分析中增加 dfx 文件数据集 数据集窗口大家肯定都不生疏,多维分析与内部API之间的通道就是通过它指定DFX文件实现的。 抉择dfx文件时是不是发现步骤三中创立的dfx被列出来了,前因后果这下明确了吧,猜对了,这个列表默认就是把[装置根目录]\report\web\webapps\demo\WEB-INF\files\dfx这个目录下的所有dfx列出。想要批改这个目录门路也是ok的,在 "[demo 利用根目录]/raqsoft/guide/jsp/olap.jsp" 中增加 JS API 进行指定,如下图所示: 抉择dfx文件,传递参数值,点击查问数据,缓存入文件保留,数据集就创立实现了! 接下来马上又到了每日开心一刻了,任性拖拽无人拦截,哈哈! 点击【增加报表】,抉择数据集,填写报表名称【确定】 增加报表后,数据集返回的表构造指标就这样赤裸裸的进去了,接下来就能够拖拖拽拽查看指标内容了。咋样,有没有发现其实这种调用JavaAPI的程序数据集也挺好使,只有先把自定义类做好就相当于实现一大半了,集算器dfx只是起到了个两头调用的作用。 API返回的程序数据不仅能够是txt文本串,还能够是json串。对于json串在多维分析的调用咱们也有攻略帮您解决,其实很简略,API里的内容由您本人做主,只有最终返回的是json串就行,这里次要就是变通一下步骤三dfx文件中对json串的解决。 dfx内容作如下批改: A1=invoke(api.TxtTest.readTxttoString,pathName,hasTitle)2=json(A1)3return A2 拜访多维分析页面,增加dfx文件类型的数据集。 聪慧的你,看到这里应该什么都明确了吧?其实换汤不换药,重点都在dfx文件上,只是API返回的类型不同,在dfx中解决办法不同罢了。 拜访 Webservice提起Webservice肯定都不生疏,一款跨编程语言和跨操作系统平台的近程调用技术。对于Webservice的应用原理小编就不班门弄斧在高手背后显摆了,置信作为资深程序猿的您早已对它一目了然了吧,哈哈 ...

July 24, 2020 · 1 min · jiezi

关于分析:程序数据集上的多维分析

【摘要】 当数据源不是来自文件和 SQL,而是由程序现计算出来的,这种状况在许多 BI 零碎中都会呈现,BI 零碎本人治理数据模型,把数据库挡在前面,不会间接凋谢 SQL,更不会提供文件让你间接拜访,拜访数据都要通过程序接口(比方 JavaAPI 或 Webservice)——这样一来,想要对这些程序接口返回的后果集做多维分析看似就有些艰难了。没关系!润乾多维分析分分钟就能帮您搞定!程序数据集上的多维分析! 小编我本着先客户之忧而忧的服务主旨,思前想后还是感觉之前的《把 Excel 透视表搬到 WEB 上》和《给一句 SQL 就能做多维分析》对多维分析的介绍不太够,所以明天顺便再来唠唠如何对程序数据集做多维分析。 拜访 JavaAPIAPI是应用程序编程接口,程序凋谢API就是凋谢接口,凋谢后接口返回的程序数据就能够被其余程序调用了。 问题来了,在俺们多维分析中怎样才能对API接口返回的程序数据做剖析呢? 简略,其实是分分钟搞定的事儿! 步骤一:最最重要的前提,要麻烦程序猿自定义类,把要返回的后果集封装在一个静态方法中 本例小编本人写了个api,为办法传入txt文件门路,而后将txt内容以文本字符串返回。 test.txt文件内容: 自定义类TxtTest: package api;import java.io.*; public class TxtTest {//为不便对本办法的调用,此处需为静态方法//通过对办法传入txt文件门路和是否有题目(true/false)两个参数,将txt内容以文本字符串返回public static String readTxttoString(String pathName,boolean hasTitle){final BufferedReader bfr;final String encoding = "gbk";final File file = new File(pathName);String lineTxt=null;StringBuffer buf = new StringBuffer();InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);bfr = new BufferedReader(read);while((lineTxt=bfr.readLine())!=null){buf.append(lineTxt+"\\n");}return buf.toString();}}步骤二:将TxtTest.class文件放入WEB利用能加装到的类门路下,本例以安装包自带的demo利用为例,因而该文件可放入[装置根目录]\report\web\webapps\demo\WEB-INF\classes\api下。 步骤三:在集算器设计器中新建 txtTest.dfx,增加参数和网格内容: A1=invoke(api.TxtTest.readTxttoString,pathName,hasTitle)2=A1.import@tq()3return A1 应用invoke函数,调用步骤一中自定义JAVA类中的静态方法,并为办法传入参数。 保留后将dfx文件放至[装置根目录]\report\web\webapps\demo\WEB-INF\files\dfx目录下。至于为啥要把文件放到这儿,先卖个关子,前面再解释。 集算器用的invoke函数次要是用来调用用户自定义函数的,不仅能像下面例子这样返回字符串,还能够返回其余多种类型,不过必须应用可与集算器匹配的数据类型,否则有可能在展示或调用时呈现谬误。集算器中罕用数据类型对应的Java类型如下: 整数java.lang.Integer长整数java.lang.Long浮点数java.lang.Double长实数java.math.BigInteger实数java.lang.Number布尔型java.lang.Boolean字符串java.lang.String日期java.sql.Date工夫java.sql.Time日期工夫java.sql.TimeStamp二进制数据byte[] 步骤四:多维分析中增加 dfx 文件数据集 数据集窗口大家肯定都不生疏,多维分析与内部API之间的通道就是通过它指定DFX文件实现的。 抉择dfx文件时是不是发现步骤三中创立的dfx被列出来了,前因后果这下明确了吧,猜对了,这个列表默认就是把[装置根目录]\report\web\webapps\demo\WEB-INF\files\dfx这个目录下的所有dfx列出。想要批改这个目录门路也是ok的,在 "[demo 利用根目录]/raqsoft/guide/jsp/olap.jsp" 中增加 JS API 进行指定,如下图所示: 抉择dfx文件,传递参数值,点击查问数据,缓存入文件保留,数据集就创立实现了! 接下来马上又到了每日开心一刻了,任性拖拽无人拦截,哈哈! 点击【增加报表】,抉择数据集,填写报表名称【确定】 增加报表后,数据集返回的表构造指标就这样赤裸裸的进去了,接下来就能够拖拖拽拽查看指标内容了。咋样,有没有发现其实这种调用JavaAPI的程序数据集也挺好使,只有先把自定义类做好就相当于实现一大半了,集算器dfx只是起到了个两头调用的作用。 API返回的程序数据不仅能够是txt文本串,还能够是json串。对于json串在多维分析的调用咱们也有攻略帮您解决,其实很简略,API里的内容由您本人做主,只有最终返回的是json串就行,这里次要就是变通一下步骤三dfx文件中对json串的解决。 dfx内容作如下批改: A1=invoke(api.TxtTest.readTxttoString,pathName,hasTitle)2=json(A1)3return A2 拜访多维分析页面,增加dfx文件类型的数据集。 聪慧的你,看到这里应该什么都明确了吧?其实换汤不换药,重点都在dfx文件上,只是API返回的类型不同,在dfx中解决办法不同罢了。 拜访 Webservice提起Webservice肯定都不生疏,一款跨编程语言和跨操作系统平台的近程调用技术。对于Webservice的应用原理小编就不班门弄斧在高手背后显摆了,置信作为资深程序猿的您早已对它一目了然了吧,哈哈 ...

July 24, 2020 · 1 min · jiezi

继-多闪后飞聊再被diss其实社交还能这么玩

近日头条低调上线了新的社交APP——飞聊,目前在AppStore社交排行榜第7位。但很多人使用了之后都觉得新产品的各个功能都让人想起其他的产品。兴趣小组让人想到豆瓣的兴趣小组,生活动态让人想到微博动态,聊天中的语音文字同步发,让那个人想到子弹短信。一时间,“飞聊”是一个社交功能合集成了许多人对它的第一印象。为什么即使市面上已有很多较成熟的产品,头部大厂BAT都投身其中,头条还是在“多闪”效果并不理想的情况,继续押注社交?或许数据能为我们窥探一二,从艾瑞咨询的数据来看,虽然社交时长收入的增长率放缓,但预测实际可带来的来的收入不可小觑,预计在2020年将会达到2716.4亿。社交这块大蛋糕,大家都想分一块。 集多种功能为一体的产品虽然能快速让用户因某个功能聚集起来,但现在的用户在社交上有太多的选择,随时会因为新鲜感不在而离开。而社交是个万金油,搭配其他的功能、玩法,就能产生新的产品甚至一个新的商业化模式。或许我们来回顾一下现有的社交+玩法,会得到一些灵感。 社交+电商 变身带货达人在社区内容型社交产品都会有一些头部“网红”用户,在前期累积了较多的粉丝,在用户群中形成了一定的风向标。从小红书的种草达人林允,到抖音口红一哥李佳琪。在巅峰时期,他们随便一个推荐,第二天专柜可能全部断货。如何创造这些头部用户是实现商业化的第一步,而反观这些带货明星他们都有一些重要的特征:1、明显独特的人物特征,林允作为明星却经常推荐一些平价商品,李佳琪作为男性却做的是口红试色,他们在社交平台上都有自己独特的人物特征,与他们的创作内容紧密相关;2、持续不断的同类内容输出,增强人物特征。这两位种草达人几乎每天都有内容产出,而每天输出的内容也基本都是同一类的。这些内容每天都在吸引新的粉丝,同时每天都在对老粉丝进行留存提示,紧紧抓住了粉丝的忠实度;3、接地气的亲身示范,通过自身试用,并将试用感受反馈给粉丝,提升了粉丝对推荐产品的信任感,加速了种草到下单的速度。通常这类社交平台会结合内容做商品推荐,将商品链接放在内容同一页面,完成了分享——种草——下单的流程。路径步骤简洁,一定程度上提升了有效转化率。 社交+定制服务 更尊贵的VIP体验婚恋是社交中目标较明确的场景,婚恋市场渗透率也持续保持增长。同时大数据、云计算等技术的发展和移动端服务的提升,婚恋从线下转到PC转到移动端,预计2021年网络婚恋市场规模将达到72.7亿(数据来自艾瑞咨询)。在婚恋APP中,用户想要有更详细可靠的异性会员资料,甚至个人定制化服务,这些差异功能就生产出了会员概念,而会员费成为婚恋线上平台的主要商业模式。随着视频功能发展,婚恋平台上也多了很多玩法,如直播交友,1V1视频通话,互动小游戏,这些新玩法也带来了增值服务的商业化。 社交+直播 下沉的网络主播在线直播受到短视频等其他平台的兴起,在活跃趋势上有所下滑,但根据城市TGI指数看,直播用户下沉到了四、五线城市中,在下沉用户中对直播还是存在较强的需求。(数据来源TalkingData)直播根据互动性简单分为弱互动直播阶段和实时互动直播阶段,在每个阶段上也拓展了不同的商业模式:弱互动直播阶段:1个房间+1个主播+n个观众,主播表演才艺,调节气氛,观众给主播送礼物,发个文字调戏一下,互动性较弱,大部分处于观看主播表演中。这一阶段购买礼物是主要的商业模式。实时互动直播阶段:1个房间+1个主播+n个观众+n个连麦,在这一阶段多了连麦的角色,即有观众可以通过连麦直接和主播互动,大大增加互动性,同时也增加了新的玩法,比如PK,抢麦等。这一阶段新玩法带来了新商业模式——付费抢麦。在实时互动阶段中,用户对直播清晰度,实时性的要求也越来越高,这对APP的技术能力也有较高要求,大部分APP运营方会接入类似云信这一类技术服务商来保障稳定流畅的技术支持。欢迎与我们沟通交流更多的场景建设及技术解决方案。 想要阅读更多技术干货、行业洞察,欢迎关注网易云信博客。了解网易云信,来自网易核心架构的通信与视频云服务。 网易云信(NeteaseYunXin)是集网易18年IM以及音视频技术打造的PaaS服务产品,来自网易核心技术架构的通信与视频云服务,稳定易用且功能全面,致力于提供全球领先的技术能力和场景化解决方案。开发者通过集成客户端SDK和云端OPEN API,即可快速实现包含IM、音视频通话、直播、点播、互动白板、短信等功能。

July 2, 2019 · 1 min · jiezi

调试和分析Python脚本

来源 | 愿码(ChainDesk.CN)内容编辑愿码Slogan | 连接每个程序员的故事网站 | http://chaindesk.cn愿码愿景 | 打造全学科IT系统免费课程,助力小白用户、初级工程师0成本免费系统学习、低成本进阶,帮助BAT一线资深工程师成长并利用自身优势创造睡后收入。官方公众号 | 愿码 | 愿码服务号 | 区块链部落免费加入愿码全思维工程师社群 | 任一公众号回复“愿码”两个字获取入群二维码本文阅读时长:11min调试和分析在Python开发中发挥重要作用 。调试器可帮助程序员分析完整的代码。调试器设置断点,而分析器运行我们的代码并向我们提供执行时间的详细信息,分析器将识别程序中的瓶颈。Python调试技术调试是一个解决代码中出现的问题并阻止软件正常运行的过程。在Python中,调试非常简单。Python调试器设置条件断点并一次调试一行源代码。我们将使用pdb Python标准库中的模块调试我们的Python脚本 。为了更好地调试Python程序,可以使用各种技术。我们将讨论Python调试的四种技术:print() 声明:这是了解发生了什么的最简单方法,因此您可以检查已执行的内容。logging:这就像一个print声明,但有更多的上下文信息,所以你可以完全理解它。pdb debugger:这是一种常用的调试技术。使用的优点pdb是您可以pdb从命令行,解释器和程序中使用。IDE调试器:IDE具有集成调试器。它允许开发人员执行他们的代码,然后开发人员可以在程序执行时进行检查。错误处理(异常处理)在本节中,我们将学习Python如何处理异常。例外是程序执行期间发生的错误。每当发生任何错误时,Python都会生成一个异常,该异常将使用try … except块进行处理。程序无法处理某些异常,因此会导致错误消息。现在,我们将看到一些异常示例。在终端中,启动 python3交互式控制台,我们将看到一些异常示例:student@ubuntu:$ python3Python 3.5.2 (default, Nov 23 2017, 16:37:01)[GCC 5.4.0 20160609] on linuxType “help”, “copyright”, “credits” or “license” for more information.>>>>>> 50 / 0Traceback (most recent call last): File “”, line 1, in ZeroDivisionError: division by zero>>>>>> 6 + abc*5Traceback (most recent call last): File “”, line 1, in NameError: name ‘abc’ is not defined>>>>>> ‘abc’ + 2Traceback (most recent call last): File “”, line 1, in TypeError: Can’t convert ‘int’ object to str implicitly>>>>>> import abcdTraceback (most recent call last): File “”, line 1, in ImportError: No module named ‘abcd’>>> 这些是例外的一些例子。现在,我们将看到我们如何处理异常。每当Python程序中发生错误时,都会引发异常。我们还可以使用raise关键字强制引发异常。现在我们将看到一个try…except处理异常的块。在try块中,我们将编写可能生成异常的代码。在except块中,我们将为该异常编写解决方案。语法 try…except如下:try: statement(s)except: statement(s)一个try块可以有多个except语句。我们也可以通过在except关键字后面输入例外名称来处理特定的例外。处理特定异常的语法如下:try: statement(s)except exception_name: statement(s)我们将创建一个exception_example.py 要捕获的脚本ZeroDivisionError。在脚本中编写以下代码:a = 35b = 57try: c = a + b print(“The value of c is: “, c) d = b / 0 print(“The value of d is: “, d) except: print(“Division by zero is not possible”) print(“Out of try…except block”)按如下所示运行脚本,您将获得以下输出:student@ubuntu:$ python3 exception_example.pyThe value of c is: 92Division by zero is not possibleOut of try…except block调试器工具Python支持许多调试工具:winpdbpydevpydbpdbgdbpyDebug在本节中,我们将学习pdb Python调试器。pdbmodule是Python标准库的一部分,始终可供使用。pdb调试器该pdb模块用于调试Python程序。Python程序使用pdb交互式源代码调试器来调试程序。pdb设置断点并检查堆栈帧,并列出源代码。现在我们将了解如何使用pdb调试器。有三种方法可以使用此调试器:· 在解释器中· 从命令行· 在Python脚本中我们将创建一个pdb_example.py脚本并在该脚本中添加以下内容:class Student: def init(self, std): self.count = std def print_std(self): for i in range(self.count): print(i) returnif name == ‘main’: Student(5).print_std()以此脚本为例学习Python调试,我们将看到如何详细启动调试器。在解释器中要从Python交互式控制台启动调试器,我们使用run()或runeval()。启动python3交互式控制台。运行以下命令以启动控制台:$ python3导入我们的 pdb_example脚本名称和pdb模块。现在,我们将使用run()并且我们将字符串表达式作为参数传递给run()Python解释器本身:student@ubuntu:$ python3Python 3.5.2 (default, Nov 23 2017, 16:37:01)[GCC 5.4.0 20160609] on linuxType “help”, “copyright”, “credits” or “license” for more information.>>>>>> import pdb_example>>> import pdb>>> pdb.run(‘pdb_example.Student(5).print_std()’)> (1)()(Pdb)要继续调试,请continue在(Pdb)提示符后输入并按Enter键。如果你想知道我们可以在这里使用的选项,那么在(Pdb)提示后按两次Tab 键。现在,输入后continue,我们将获得如下输出:student@ubuntu:$ python3Python 3.5.2 (default, Nov 23 2017, 16:37:01)[GCC 5.4.0 20160609] on linuxType “help”, “copyright”, “credits” or “license” for more information.>>>>>> import pdb_example>>> import pdb>>> pdb.run(‘pdb_example.Student(5).print_std()’)> (1)()(Pdb) continue01234>>> 从命令行运行调试器的最简单,最直接的方法是从命令行。我们的程序将作为调试器的输入。您可以从命令行使用调试器,如下所示:$ python3 -m pdb pdb_example.py从命令行运行调试器时,将加载源代码,它将停止在找到的第一行执行。输入continue以继续调试。这是输出:student@ubuntu:$ python3 -m pdb pdb_example.py> /home/student/pdb_example.py(1)()-> class Student:(Pdb) continue01234The program finished and will be restarted> /home/student/pdb_example.py(1)()-> class Student:(Pdb)在Python脚本中前两种技术将在Python程序开始时启动调试器。但这第三种技术最适合长期运行的流程。要在脚本中启动调试器,请使用set_trace()。现在,修改您的pdb_example.py 文件,如下所示:import pdbclass Student: def init(self, std): self.count = std def print_std(self): for i in range(self.count): pdb.set_trace() print(i) return if name == ‘main’: Student(5).print_std()现在,按如下方式运行程序:student@ubuntu:$ python3 pdb_example.py> /home/student/pdb_example.py(10)print_std()-> print(i)(Pdb) continue0> /home/student/pdb_example.py(9)print_std()-> pdb.set_trace()(Pdb)set_trace() 是一个Python函数,因此您可以在程序中的任何位置调用它。因此,这些是启动调试器的三种方式。调试基本程序崩溃在本节中,我们将看到跟踪模块。跟踪模块有助于跟踪程序执行。因此,每当您的Python程序崩溃时,我们都可以理解崩溃的位置。我们可以通过将跟踪模块导入您的脚本以及命令行来使用它。现在,我们将创建一个名为脚本trace_example.py并在脚本中编写以下内容:class Student: def init(self, std): self.count = std def go(self): for i in range(self.count): print(i) returnif name == ‘main’: Student(5).go()输出如下:student@ubuntu:$ python3 -m trace –trace trace_example.py — modulename: trace_example, funcname: trace_example.py(1): class Student: — modulename: trace_example, funcname: Studenttrace_example.py(1): class Student:trace_example.py(2): def init(self, std):trace_example.py(5): def go(self):trace_example.py(10): if name == ‘main’:trace_example.py(11): Student(5).go() — modulename: trace_example, funcname: inittrace_example.py(3): self.count = std — modulename: trace_example, funcname: gotrace_example.py(6): for i in range(self.count):trace_example.py(7): print(i)0trace_example.py(6): for i in range(self.count):trace_example.py(7): print(i)1trace_example.py(6): for i in range(self.count):trace_example.py(7): print(i)2trace_example.py(6): for i in range(self.count):trace_example.py(7): print(i)3trace_example.py(6): for i in range(self.count):trace_example.py(7): print(i)4因此,通过trace –trace在命令行使用,开发人员可以逐行跟踪程序。因此,只要程序崩溃,开发人员就会知道崩溃的实例。分析和计时程序分析Python程序意味着测量程序的执行时间。它衡量每个功能所花费的时间。Python的cProfile模块用于分析Python程序。cProfile模块如前所述,分析意味着测量程序的执行时间。我们将使用cProfile Python模块来分析程序。现在,我们将编写一个 cprof_example.py 脚本并在其中编写以下代码:mul_value = 0def mul_numbers( num1, num2 ): mul_value = num1 * num2; print (“Local Value: “, mul_value) return mul_valuemul_numbers( 58, 77 )print (“Global Value: “, mul_value)运行程序,您将看到如下输出:student@ubuntu:$ python3 -m cProfile cprof_example.pyLocal Value: 4466Global Value: 0 6 function calls in 0.000 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 0.000 0.000 cprof_example.py:1() 1 0.000 0.000 0.000 0.000 cprof_example.py:2(mul_numbers) 1 0.000 0.000 0.000 0.000 {built-in method builtins.exec} 2 0.000 0.000 0.000 0.000 {built-in method builtins.print} 1 0.000 0.000 0.000 0.000 {method ‘disable’ of ‘_lsprof.Profiler’ objects}因此,使用时cProfile,所有被调用的函数都将打印出每个函数所花费的时间。现在,我们将看到这些列标题的含义:· ncalls: 通话次数· tottime: 在给定函数中花费的总时间· percall:商数tottime除以ncalls· cumtime:在此和所有方面花费的累计时间 subfunctions· percall:cumtime除以原始调用的商数· filename:lineno(function):提供每个功能的相应数据timeittimeit是一个Python模块,用于计算Python脚本的一小部分。您可以从命令行调用timeit,也可以将timeit模块导入到脚本中。我们将编写一个脚本来计算一段代码。创建一个timeit_example.py脚本并将以下内容写入其中:import timeitprg_setup = “from math import sqrt"prg_code = ‘‘‘def timeit_example(): list1 = [] for x in range(50): list1.append(sqrt(x))’’’# timeit statementprint(timeit.timeit(setup = prg_setup, stmt = prg_code, number = 10000))使用timeit,我们可以决定我们要测量的代码片段。因此,我们可以轻松定义设置代码以及我们要单独执行测试的代码段。主代码运行100万次,这是默认时间,而设置代码只运行一次。使程序运行得更快有多种方法可以使Python程序运行得更快,例如:描述您的代码,以便识别瓶颈使用内置函数和库,因此解释器不需要执行循环避免使用全局变量,因为Python在访问全局变量时非常慢使用现有包 ...

April 9, 2019 · 3 min · jiezi

通过DataWorks数据集成归档日志服务数据至MaxCompute进行离线分析

通过DataWorks归档日志服务数据至MaxCompute官方指导文档:https://help.aliyun.com/document_detail/68322.html但是会遇到大家在分区上或者DataWorks调度参数配置问题,具体拿到真实的case模拟如下:创建数据源:步骤1、进入数据集成,点击作业数据源,进入Tab页面。步骤2、 点击右上角新增数据源,选择消息队列 loghub。步骤3、编辑LogHub数据源中的必填项,包括数据源名称、LogHubEndpoint、Project、AK信息等,并点击 测试连通性。创建目标表:步骤1、在左侧tab也中找到临时查询,并右键>新建ODPS SQL节点。步骤2、编写建表DDL。步骤3、点击执行 按钮进行创建目标表,分别为ods_client_operation_log、ods_vedio_server_log、ods_web_tracking_log。步骤4、直到日志打印成本,表示三条DDL语句执行完毕。步骤5、可以通过desc 查看创建的表。其他两张表也可以通过desc 进行查询。确认数据表的存在情况。创建数据同步任务数据源端以及在DataWorks中的数据源连通性都已经配置好,接下来就可以通过数据同步任务进行采集数据到MaxCompute上。操作步骤步骤1、点击新建业务流程 并 确认提交,名称为 直播日志采集。步骤2、在业务流程开发面板中依次创建如下依赖并命名。依次配置数据同步任务节点配置:web_tracking_log_syn、client_operation_log_syn、vedio_server_log_syn。步骤3、双击web_tracking_log_syn 进入节点配置,配置项包括数据源(数据来源和数据去向)、字段映射(源头表和目标表)、通道控制。根据采集的时间窗口自定义参数为:步骤4、可以点击高级运行进行测试。可以分别手工收入自定义参数值进行测试。步骤5、使用SQL脚本确认是否数据已经写进来。如下图所示:日志服务的日志正式的被采集入库,接下来就可以进行数据加工。比如可以通过上述来统计热门房间、地域分布和卡顿率,如下所示:具体SQL逻辑不在这里展开,可以根据具体业务需求来统计分析。依赖关系配置如上图所示。本文作者:祎休阅读原文本文为云栖社区原创内容,未经允许不得转载。

April 2, 2019 · 1 min · jiezi

for-loop 与 json.Unmarshal 性能分析概要

原文地址:for-loop 与 json.Unmarshal 性能分析概要前言在项目中,常常会遇到循环交换赋值的数据处理场景,尤其是 RPC,数据交互格式要转为 Protobuf,赋值是无法避免的。一般会有如下几种做法:forfor rangejson.Marshal/Unmarshal这时候又面临 “选择困难症”,用哪个好?又想代码量少,又担心性能有没有影响啊…为了弄清楚这个疑惑,接下来将分别编写三种使用场景。来简单看看它们的性能情况,看看谁更 “好”功能代码…type Person struct { Name string json:"name" Age int json:"age" Avatar string json:"avatar" Type string json:"type"}type AgainPerson struct { Name string json:"name" Age int json:"age" Avatar string json:"avatar" Type string json:"type"}const MAX = 10000func InitPerson() []Person { var persons []Person for i := 0; i < MAX; i++ { persons = append(persons, Person{ Name: “EDDYCJY”, Age: i, Avatar: “https://github.com/EDDYCJY", Type: “Person”, }) } return persons}func ForStruct(p []Person, count int) { for i := 0; i < count; i++ { _, _ = i, p[i] }}func ForRangeStruct(p []Person) { for i, v := range p { _, _ = i, v }}func JsonToStruct(data []byte, againPerson []AgainPerson) ([]AgainPerson, error) { err := json.Unmarshal(data, &againPerson) return againPerson, err}func JsonIteratorToStruct(data []byte, againPerson []AgainPerson) ([]AgainPerson, error) { var jsonIter = jsoniter.ConfigCompatibleWithStandardLibrary err := jsonIter.Unmarshal(data, &againPerson) return againPerson, err}测试代码…func BenchmarkForStruct(b *testing.B) { person := InitPerson() count := len(person) b.ResetTimer() for i := 0; i < b.N; i++ { ForStruct(person, count) }}func BenchmarkForRangeStruct(b *testing.B) { person := InitPerson() b.ResetTimer() for i := 0; i < b.N; i++ { ForRangeStruct(person) }}func BenchmarkJsonToStruct(b *testing.B) { var ( person = InitPerson() againPersons []AgainPerson ) data, err := json.Marshal(person) if err != nil { b.Fatalf(“json.Marshal err: %v”, err) } b.ResetTimer() for i := 0; i < b.N; i++ { JsonToStruct(data, againPersons) }}func BenchmarkJsonIteratorToStruct(b *testing.B) { var ( person = InitPerson() againPersons []AgainPerson ) data, err := json.Marshal(person) if err != nil { b.Fatalf(“json.Marshal err: %v”, err) } b.ResetTimer() for i := 0; i < b.N; i++ { JsonIteratorToStruct(data, againPersons) }}测试结果BenchmarkForStruct-4 500000 3289 ns/op 0 B/op 0 allocs/opBenchmarkForRangeStruct-4 200000 9178 ns/op 0 B/op 0 allocs/opBenchmarkJsonToStruct-4 100 19173117 ns/op 2618509 B/op 40036 allocs/opBenchmarkJsonIteratorToStruct-4 300 4116491 ns/op 3694017 B/op 30047 allocs/op从测试结果来看,性能排名为:for < for range < json-iterator < encoding/json。接下来我们看看是什么原因导致了这样子的排名?性能对比for-loop在测试结果中,for range 在性能上相较 for 差。这是为什么呢?在这里我们可以参见 for range 的 实现,伪实现如下:for_temp := rangelen_temp := len(for_temp)for index_temp = 0; index_temp < len_temp; index_temp++ { value_temp = for_temp[index_temp] index = index_temp value = value_temp original body}通过分析伪实现,可得知 for range 相较 for 多做了如下事项ExpressionRangeClause = [ ExpressionList “=” | IdentifierList “:=” ] “range” Expression .在循环开始之前会对范围表达式进行求值,多做了 “解” 表达式的动作,得到了最终的范围值Copy…value_temp = for_temp[index_temp]index = index_tempvalue = value_temp…从伪实现上可以得出,for range 始终使用值拷贝的方式来生成循环变量。通俗来讲,就是在每次循环时,都会对循环变量重新分配小结通过上述的分析,可得知其比 for 慢的原因是 for range 有额外的性能开销,主要为值拷贝的动作导致的性能下降。这是它慢的原因那么其实在 for range 中,我们可以使用 _ 和 T[i] 也能达到和 for 差不多的性能。但这可能不是 for range 的设计本意了json.Marshal/Unmarshalencoding/jsonjson 互转是在三种方案中最慢的,这是为什么呢?众所皆知,官方的 encoding/json 标准库,是通过大量反射来实现的。那么 “慢”,也是必然的。可参见下述代码:…func newTypeEncoder(t reflect.Type, allowAddr bool) encoderFunc { … switch t.Kind() { case reflect.Bool: return boolEncoder case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return intEncoder case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: return uintEncoder case reflect.Float32: return float32Encoder case reflect.Float64: return float64Encoder case reflect.String: return stringEncoder case reflect.Interface: return interfaceEncoder case reflect.Struct: return newStructEncoder(t) case reflect.Map: return newMapEncoder(t) case reflect.Slice: return newSliceEncoder(t) case reflect.Array: return newArrayEncoder(t) case reflect.Ptr: return newPtrEncoder(t) default: return unsupportedTypeEncoder }}既然官方的标准库存在一定的 “问题”,那么有没有其他解决方法呢?目前在社区里,大多为两类方案。如下:预编译生成代码(提前确定类型),可以解决运行时的反射带来的性能开销。缺点是增加了预生成的步骤优化序列化的逻辑,性能达到最大化接下来的实验,我们用第二种方案的库来测试,看看有没有改变。另外也推荐大家了解如下项目:json-iterator/gomailru/easyjsonpquerna/ffjsonjson-iterator/go目前社区较常用的是 json-iterator/go,我们在测试代码中用到了它它的用法与标准库 100% 兼容,并且性能有较大提升。我们一起粗略的看下是怎么做到的,如下:reflect2利用 modern-go/reflect2 减少运行时调度开销…type StructDescriptor struct { Type reflect2.Type Fields []*Binding}…type Binding struct { levels []int Field reflect2.StructField FromNames []string ToNames []string Encoder ValEncoder Decoder ValDecoder}type Extension interface { UpdateStructDescriptor(structDescriptor *StructDescriptor) CreateMapKeyDecoder(typ reflect2.Type) ValDecoder CreateMapKeyEncoder(typ reflect2.Type) ValEncoder CreateDecoder(typ reflect2.Type) ValDecoder CreateEncoder(typ reflect2.Type) ValEncoder DecorateDecoder(typ reflect2.Type, decoder ValDecoder) ValDecoder DecorateEncoder(typ reflect2.Type, encoder ValEncoder) ValEncoder}struct Encoder/Decoder Cache类型为 struct 时,只需要反射一次 Name 和 Type,会缓存 struct Encoder 和 Decodervar typeDecoders = map[string]ValDecoder{}var fieldDecoders = map[string]ValDecoder{}var typeEncoders = map[string]ValEncoder{}var fieldEncoders = map[string]ValEncoder{}var extensions = []Extension{}….fieldNames := calcFieldNames(field.Name(), tagParts[0], tag)fieldCacheKey := fmt.Sprintf("%s/%s”, typ.String(), field.Name())decoder := fieldDecoders[fieldCacheKey]if decoder == nil { decoder = decoderOfType(ctx.append(field.Name()), field.Type())}encoder := fieldEncoders[fieldCacheKey]if encoder == nil { encoder = encoderOfType(ctx.append(field.Name()), field.Type())}文本解析优化小结相较于官方标准库,第三方库 json-iterator/go 在运行时上做的更好。这是它快的原因有个需要注意的点,在 Go1.10 后 map 类型与标准库的已经没有太大的性能差异。但是,例如 struct 类型等仍然有较大的性能提高总结在本文中,我们首先进行了性能测试,再分析了不同方案,得知为什么了快慢的原因。那么最终在选择方案时,可以根据不同的应用场景去抉择:对性能开销有较高要求:选用 for,开销最小中规中矩:选用 for range,大对象慎用量小、占用小、数量可控:选用 json.Marshal/Unmarshal 的方案也可以。其重复代码少,但开销最大在绝大多数场景中,使用哪种并没有太大的影响。但作为工程师你应当清楚其利弊。以上就是不同的方案分析概要,希望对你有所帮助 :) ...

February 17, 2019 · 3 min · jiezi

【产品】产品经理常用的五大分析法

产品经理:五大分析法一.5W2H分析法何因(why)、何事(what)、何人(who)、何时(when)、何地(where)、如何做(how)、何价(how much),此方法广泛用于企业营销、管理活动,对于决策和执行性的活动措施非常有帮助,也有助于弥补考虑问题的疏漏。如下图以新闻咨询类为例子的分析:二.逻辑树分析法(又称问题树、演绎树、分解树等)此方法是分析问题最常用的方法之一,它是将问题的所有子问题分层罗列,从最高层开始,并逐步向下扩展。逻辑树能保证解决问题过程的完整性,它能将工作细分为便于操作的任务、模块等,确定各部分的优先顺序,明确事由。同时也可以利用在产品模块的从属关系上。如下图,产品的信息结构图(一部分):同时在使用的时候要注意以下三个原则:要素化:把相同问题总结归纳成要素。框架化:将各个要素组合成框架、遵守不重不漏的原则。关联化:框架内的各要素保持必要的相互关系,简单而不孤立。缺点:涉及的相关问题可能有疏漏。三.4P营销理论产品(product)、价格(price)、渠道(place)、促销(promotion)产品(product):从市场营销的角度来看,产品是指能够提供给市场,被人们使用和消费并满足人们某种需要的任何东西,包括有形的产品、服务、人员、组织、观念或它们的组合。反应在互联网产品上就体现在产品所能带给用户的服务体验、节省时间、空间、信息、交通、社交等所创造的价值。价格(price):是指用户消费时的价格,包括基本价格、促销价格、折扣价格、支付期限等。价格决策关系到企业的利润、成本补偿,以及斯否有利于产品促销等问题。同时展现在app上的特点在于,你要展现产品的原价、所要优惠的形式,如:9折、减100、满500减50、优惠卷等;最重要的是要在用户最终支付的价格要显示清楚。影响定价的主要三因素:需求、成本、竞争。最高价格取决于需求,最低价格取决于该产品的成本价,在最低与最高之间定价,取决于竞品价。渠道(place):是指产品开发出来,传播流转到用户手中(用户手下载公司的app),全过程中所经历的各个环节。比如:广告、搜索、推荐、社群、还有最不好的类似于网赚渠道下载的app。促销(promotion):是指企业通过改变销售行为来刺激用户消费,以短期的行为促进销售的增长。如:摩拜和ofo的免费骑行,现在摩拜的骑行红包,还有各电商类的双十一等。4P营销理论是了解公司的整体运营情况,就可以采用此方法。四.用户行为理论是指用户在使用产品所进行的一些行为,最常用的方法是时间轴查看法,也就是左为时间右为行为。主要就是为了查看活跃、普通、非活跃用户的行为对比,以及与自己设定的流程是否相符,同时优化流程和修改功能提供灵感。举例:下面说明5个行为走势五.PEST分析法适用于宏观环境的分析方法,是指影响一切行业和企业的各种宏观力量。政治环境:国家的社会制度、执政党的性质、政府的方针、政策、法令等。构成的关键指标有:政治体制、经济体制、财政政策、税收政策、产业政策、投资政策、专利数量、国防开支水平、政府补贴水平、民众对政治的参与度等。经济环境:宏观与微观两方面。宏观:国家的国民生产总值及其变化情况,以及通过这些指标反映的国民经济发展水平和发展速度。微观:企业所在地区的消费者的收入水平、消费偏好、储蓄情况、就业程度等因素,这些因素直接决定着企业目前及未来的市场大小。社会环境:文化水平,影响居民的需求层次;宗教信仰和风俗习惯,禁止或抵制某些活动进行,以及一些产品的引入;价值观,影响用户对产品的认可度;审美观,影响人们对产品、活动方式等的态度。技术环境:新技术的发明与进展,更新与传播速度;商品化速度,国家重点支持项目,国家投入的研发经费,专利保护情况等因素。下面用互联网行业举例分析一下:六.总结PEST分析主要用于行业分析。4OP分析主要用于公司整体经营情况分析。逻辑树分析可用于业务问题专题分析。用户行为分析较单一,就是用于用户行为研究分析。5W2H分析用途想对较广泛,可用于用户行为分析,业务问题专题分析等。当然以上的分析法不是全部的,也不是固定不变的。他们之间是可以互相套用的,比如用PEST分析大行业后,在其后用逻辑树把所包含的细则,详细列举等。

January 13, 2019 · 1 min · jiezi