精华内容
下载资源
问答
  • 按照行、列进行统计(按两个维度进行统计)
    千次阅读
    2021-02-07 07:02:15

    select * from u_md_dm.s_temp_import_d;

    760b6dd4466e59ecc2ddd334dce6d196.png

    1、按照年和姓名来统计每个人每年的签到次数

    select k.dates,sum(case when k.pro_d_name='张三' then k.times else 0 end) 张三,sum(case when k.pro_d_name='李四' then k.times else 0 end) 李四,sum(case when k.pro_d_name='王五' then k.times else 0 end) 王五

    from (

    select substr(pro_d_no,0,5) dates,pro_d_name,count(1) times from u_md_dm.s_temp_import_d group by substr(pro_d_no,0,5),pro_d_name) k

    group by k.dates;

    0a91e2046fa2be1f9164cf320ccfa838.png

    另:也可以用下面的语句实现:

    with k as

    (select substr(pro_d_no,0,5) dates,pro_d_name,count(1) times from u_md_dm.s_temp_import_d group by substr(pro_d_no,0,5),pro_d_name)

    select

    k.dates,sum(case when k.pro_d_name='张三' then k.times else 0 end) 张三,sum(case when k.pro_d_name='李四' then k.times else 0 end) 李四,sum(case when k.pro_d_name='王五' then k.times else 0 end) 王五

    from k group by k.dates

    更多相关内容
  • zd(3,1)=interp2(4,1,A(i,5),3,1,'linear'); zd(3,2)=interp2(4,2,A(i,4),3,2,'linear'); zd(3,3)=interp2(4,3,A(i,3),3,3,'linear'); zd(3,4)=interp2(4,4,A(i,2),3,4,'linear'); surf(zd); end
  •  品牌个性的五个维度 大多数品牌人物可以分为大类,或“维度”,因为它们是由社会心理学家詹妮弗·阿克(Jennifer Aaker)创造的(后来成为行业标准)。每个维度都有自己的个性特征和优势: 称职 可靠,成功,...

    品牌就像人。

    当他们平易近人时,我们喜欢他们; 当他们看起来不真实时,我们远离他们。他们可以惹恼我们,就像容易让我们哭泣一样。有些品牌似乎是专门为我们创造的,在极少数情况下,它们甚至让我们觉得有效和被爱。

    换句话说,品牌可以产生情感影响,而成功的品牌通常会向客户传达积极的体验。

    但他们如何提供这种积极的体验?他们甚至如何定义它是什么?

    答案:通过他们的品牌个性。

    品牌个性是品牌标识的核心部分之一,它是您可以利用的众多工具之一,可以塑造公众对您业务的看法。

    什么是品牌个性?

    您的品牌个性是您品牌的人性组成部分。它由随时间变化的情绪特征和行为组成。

    如果您的品牌标识是您品牌的整体信息,那么您的品牌个性就是消息传递的情感方式。

    将品牌个性融入生活是品牌塑造最重要的方面之一,因为它可以让您的客户记住您的身份并与您的品牌建立积极的关系。

    想一想:最难忘的人通常是那些个性突出的人,品牌也不例外。

    然而,一个拥有多重性格的品牌就像拥有一个朋友,他有一天表现得友好和善良,但下一刻就玩世不恭和粗鲁。你永远不确定你会得到什么样的反应。

    同样,您的受众想知道您的品牌会发生什么样的行为。如果他们不能获得你有趣或有诚信或任何将你的品牌与他人区别开来的东西,那么他们根本就不会依赖你。因此,了解构成品牌个性的确切因素非常重要 - 然后保持一致!

    这让我们想到了下一个问题:品牌个性是什么样的?

    在这里插入图片描述
      品牌个性的五个维度

    大多数品牌人物可以分为五大类,或“维度”,因为它们是由社会心理学家詹妮弗·阿克(Jennifer Aaker)创造的(后来成为行业标准)。每个维度都有自己的个性特征和优势:

    称职

    可靠,成功,智能。客户被这样的品牌所吸引,因为他们相信他们会完成工作。想想像微软或大众汽车这样的品牌。

    强壮

    厚实,户外,坚韧。这些品牌让顾客感到强大,并提醒他们自然。想想像Woodland和Harley Davidson这样的品牌。

    教养

    迷人,精致,高贵。作为一个品牌,通常需要时间来散发精致,但一旦到达那个程度,这些品牌就会保持平衡,打磨,让顾客感到优雅和高贵。想想像Tiffany或Armani这样的品牌。

    刺激

    大胆,有趣,富有想象力,时尚。也许他们会以有趣的方式推动极限。这些品牌擅长制造大量炒作并在观众中建立兴奋感,如Mountain Dew或Virgin Atlantic。

    纯真

    有益健康,真诚,诚实,温暖。客户喜欢这样的品牌,因为它们是可信和值得信赖的。这些品牌信守承诺并满足期望。想想像吉百利或霍尔马克这样的品牌。

    在这里插入图片描述
      创造品牌个性

    当你想弄清楚你的品牌与所有这些因素的契合点时,你基本上得问问自己:我的客户喜欢和谁一起玩?

    从现在开始,你应该把自己的品牌想象成一个人。看起来怎么样?它说话时的声音应该是什么样的?这些特点促进了你的品牌的情感和联想品质,你的客户将与之联系。

    而且,回答这些问题也将有助于告知您稍后选择做的品牌类型。

    你的品牌可能已经有了一些固有的人性特征,无论是通过你在Facebook上发布的愚蠢的节日备忘录,还是你每月向追随者发送一次的严肃而信息丰富的时事通讯。

    然而,你的品牌已经存在的特征应该有助于传达同样的情感信息,而不是相互矛盾。记住,品牌个性只有在与目标受众产生共鸣时才有效。

    你应该已经知道你的目标受众是谁,他们的痛点是什么,以及他们如何沟通。考虑到所有这些,是时候创造你的观众会爱上的个性了!

    在这里插入图片描述
      第一步:考虑竞争。

    对你的品牌个性来说,反映你的品牌信息同样重要,你也希望与竞争对手并驾齐驱。例如,如果你所有的竞争对手都表现出老练,也许你会想另辟蹊径,专注于真诚。这是一个很好的方法,可以在市场上独树一帜,使你的品牌与众不同。

    第二步:把形容词写在纸上。

    用一个词描述你的品牌,然后再做一次,又一次,又一次。在一页中填入形容词,这些形容词描绘了你的品牌,并选出最适合你的品牌的三种描述。

    第三步:画角色。

    什么样的人体现了上述形容词?画它们。

    无论你是下一个毕加索,还是一生中从未拿过一支铅笔,这个练习都值得一试。即使你最后在页面上乱涂了一堆思想泡泡,其他的都不多,你仍然会知道你的品牌应该是什么样的。稍后,您会发现类似的视觉效果渗透到您的徽标、颜色组合和品牌排版选择中。

    第四步:与你的品牌进行对话。

    是的,你没看错。既然你已经发现了哪些特质决定了你的品牌,那么决定你品牌声音的最好方法就是和它说话!问你的品牌一个问题,它会如何回答你?它是:

    机智?

    放心?

    信息丰富的?

    严重吗?

    简单化?

    未来主义?

    可联系的?

    可能性清单很长,但值得探索。一旦你知道你的品牌声音是什么,你将在你做的每件事中使用语言风格,从你创建的内容到你回答客户常见问题的方式。你的品牌声音是将你的整个品牌信息传递给观众的关键方式之一,所以花点时间来纠正它吧!

    第五步:保持一致。

    一旦你了解了你独特的品牌个性,就要坚持下去。

    从现在开始,你的品牌行为方式应该符合定义它的特征——如果你很幽默,脚踏实地,在你的活动中传播幽默;如果你是精干的精英,不要把实际的笑话当成你的事情。

    当然,如果有什么东西没有引起听众的共鸣,那就不要担心调整你的个性,使之更符合他们的要求。(而且,如果情况更糟到了最坏的地步,你可以随时重新包装!)

    一旦你能确定你的品牌个性到一个程度,你就更接近于把你的品牌身份结合在一起。你希望你的品牌散发出的这些特征将有助于你确定你以后在你的品牌设计中使用的字体类型和颜色组合。当你准备好采取下一步时,继续阅读了解如何创建品牌战略,这将有助于把你的品牌放在规划中!
      品商网原创文章,转载请注明http://www.me345.com/pinpaizhishi/219.html

    展开全文
  • 1 多维度思维 在知乎上看到了这有意思的问题:一头牛重800公斤,一座桥承重700公斤,牛应该怎么过桥。初看题目我们不难得出两方案:桥梁加固、等待牛体重降至700公斤。 这两方案显然是正确的,但是我们不能...

    欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习

    1 多维度思维

    在知乎上看到了这个有意思的问题:一头牛重800公斤,一座桥承重700公斤,牛应该怎么过桥。初看题目我们不难得出两个方案:桥梁加固、等待牛体重降至700公斤。

    这两个方案显然是正确的,但是我们不能就此止步。因为这类问题考察的是思维方法论,直接给出答案反而不是最重要的,对于这个问题我们可以从合理性、结构化、可行性三个维度进行分析。


    1.1 合理性分析

    一头800公斤的牛要通过承重700公斤的桥,这个需求本身合理吗?我们可以从必要性、紧迫性、替代性这三个维度提出三个问题:

    第一个问题问必要性:牛为什么要过桥,到底什么事情非要过桥不可

    第二个问题问紧迫性:如果非要过桥,那么这个过桥的需求是否紧急

    第三个问题问替代性:有没有什么替代方案,是否可以坐船或者绕路走


    1.2 结构化分析

    如果经过讨论结果是牛非过桥不可,那么我们再思考牛怎么过桥的方案。这里可以使用结构化思维,将大问题拆分为小维度,尽量做到不遗漏和不重复。影响过桥的因素有这几个维度:桥的维度、牛的维度、资源维度、环境维度。

    桥的维度:加固桥使承重大于800公斤

    牛的维度:等待牛的体重小于700公斤

    资源维度:使用一台吊机把牛运过去

    环境维度:取消环境重力


    1.3 可行性分析

    我们从桥的维度、牛的维度、资源维度、环境维度给出了方案,那么选择哪个方案呢?这就需要我们进行可行性评估,因时因地在资源制约下选择当前最合适的方案。

    加固桥方案经济成本较高,等待牛的体重小于700公斤时间成本较高,取消环境重力技术难度较高,所以使用一台吊机把牛运过去这个方案目前看来最合适。


    1.4 多维度思考

    经过我们从合理性、结构化、可行性三个维度梳理之后,虽然答案没有什么新颖之处,但是思维过程很清晰,思考方法也可以应用在其它问题。之所以思维过程清晰,是因为我们没有一上来直接给出答案,而是从多个维度对为题进行了分析,所以增加维度可以使思考过程更清晰和有章可循。


    2 纵向思维与横向思维

    思考维度可以从多方面进行充实,其中最常见的是增加横向和纵向两个维度,本文也着重讨论两个维度。总体而言横向扩展的是思考广度,纵向扩展的是思考深度,而应用在不同场景中细节又各有不同。


    2.1 时间管理四象限

    时间管理理论四象限法则从重要和紧急两个维度建立了一个四象限坐标,可以帮助我们解决主次不分的问题。当我们分配工作时间时,结合四象限法则,重要且紧急的任务优先级最高,而不要急于处理不重要且不紧急的任务。

    01 四象限法则.jpg


    2.2 金字塔原理

    金字塔思维的核心思想并不复杂:一件事情可以总结出一个中心思想,这个中心思想可以由三至七个论点支持,每个论点再可以由三至七个论据支持,基本结构图如下:

    金字塔原理内在结构可以从纵向和横向两个维度分析,纵向结构体现了结论先行和以上统下原则,横向结构体现了归类分组和逻辑递进原则。关于金字塔原理详细分析请参看我的文章金字塔思维怎么指导技术系统优化

    05 金字塔原理.jpg

    文章分析到这里,我们发现纵向和横向思维有助于厘清思路和增加条理性,下面我们来看看纵向和横向思维怎样帮助程序员处理复杂问题。


    3 架构设计如何应用纵横思维

    我们分析一个创建订单业务场景,当前有A、B、C三种订单类型,A类型订单价格9折,物流最大重量不能超过8公斤,不支持退款。B类型订单价格8折,物流最大重量不能超过5公斤,支持退款。C类型订单价格7折,物流最大重量不能超过1公斤,支持退款。按照需求字面含义平铺直叙地写代码也并不难实现:

    public class OrderServiceImpl implements OrderService {
    
        @Resource
        private OrderMapper orderMapper;
    
        @Override
        public void createOrder(OrderBO orderBO) {
            if (null == orderBO) {
                throw new RuntimeException("参数异常");
            }
            if (OrderTypeEnum.isNotValid(orderBO.getType())) {
                throw new RuntimeException("参数异常");
            }
            // A类型订单
            if (OrderTypeEnum.A_TYPE.getCode().equals(orderBO.getType())) {
                orderBO.setPrice(orderBO.getPrice() * 0.9);
                if (orderBO.getWeight() > 9) {
                    throw new RuntimeException("超过物流最大重量");
                }
                orderBO.setRefundSupport(Boolean.FALSE);
            }
            // B类型订单
            else if (OrderTypeEnum.B_TYPE.getCode().equals(orderBO.getType())) {
                orderBO.setPrice(orderBO.getPrice() * 0.8);
                if (orderBO.getWeight() > 8) {
                    throw new RuntimeException("超过物流最大重量");
                }
                orderBO.setRefundSupport(Boolean.TRUE);
            }
            // C类型订单
            else if (OrderTypeEnum.C_TYPE.getCode().equals(orderBO.getType())) {
                orderBO.setPrice(orderBO.getPrice() * 0.7);
                if (orderBO.getWeight() > 7) {
                    throw new RuntimeException("超过物流最大重量");
                }
                orderBO.setRefundSupport(Boolean.TRUE);
            }
            // 保存数据
            OrderDO orderDO = new OrderDO();
            BeanUtils.copyProperties(orderBO, orderDO);
            orderMapper.insert(orderDO);
        }
    }
    

    上述代码从功能上完全可以实现业务需求,但是程序员不仅要满足功能,还需要思考代码的可维护性。如果新增一种订单类型,或者新增一个订单属性处理逻辑,那么我们就要在上述逻辑中新增代码,如果处理不慎就会影响原有逻辑。为了避免牵一发而动全身这种情况,设计模式中的开闭原则要求我们面向新增开放,面向修改关闭,我认为这是设计模式中最重要的一条原则

    当需求变化时通过扩展而不是通过修改已有代码来实现变化,这样就保证代码稳定性。扩展也不是随意扩展,因为事先定义了算法,扩展也是根据算法扩展,用抽象构建框架,用实现扩展细节。标准意义的二十三种设计模式说到底最终都是在遵循开闭原则。

    那么如何改变平铺直叙的思考方式?这就要为问题分析加上纵向和横向两个维度,我选择使用分析矩阵方法,其中纵向表示策略,横向表示场景。

    06 分析矩阵.jpg

    3.1 纵向做隔离

    纵向维度表示策略,不同策略在逻辑上和业务上应该是隔离的,本实例包括优惠策略、物流策略和退款策略,策略作为抽象,不同的订单类型去扩展这个抽象。在设计模式中策略模式非常适合这种场景。

    3.1.1 优惠策略

    // 优惠策略
    public interface DiscountStrategy {
        public void discount(OrderBO orderBO);
    }
    
    // A类型订单优惠策略
    @Component
    public class TypeADiscountStrategy implements DiscountStrategy {
    
        @Override
        public void discount(OrderBO orderBO) {
            orderBO.setPrice(orderBO.getPrice() * 0.9);
        }
    }
    
    // A类型订单优惠策略
    @Component
    public class TypeBDiscountStrategy implements DiscountStrategy {
    
        @Override
        public void discount(OrderBO orderBO) {
            orderBO.setPrice(orderBO.getPrice() * 0.8);
        }
    }
    
    // A类型订单优惠策略
    @Component
    public class TypeCDiscountStrategy implements DiscountStrategy {
    
        @Override
        public void discount(OrderBO orderBO) {
            orderBO.setPrice(orderBO.getPrice() * 0.7);
        }
    }
    
    // 优惠策略工厂
    @Component
    public class DiscountStrategyFactory implements InitializingBean {
        private Map<String, DiscountStrategy> strategyMap = new HashMap<>();
    
        @Resource
        private TypeADiscountStrategy typeADiscountStrategy;
        @Resource
        private TypeBDiscountStrategy typeBDiscountStrategy;
        @Resource
        private TypeCDiscountStrategy typeCDiscountStrategy;
    
        public DiscountStrategy getStrategy(String type) {
            return strategyMap.get(type);
        }
    
        @Override
        public void afterPropertiesSet() throws Exception {
            strategyMap.put(OrderTypeEnum.A_TYPE.getCode(), typeADiscountStrategy);
            strategyMap.put(OrderTypeEnum.B_TYPE.getCode(), typeBDiscountStrategy);
            strategyMap.put(OrderTypeEnum.C_TYPE.getCode(), typeCDiscountStrategy);
        }
    }
    
    // 优惠策略执行器
    @Component
    public class DiscountStrategyExecutor {
        private DiscountStrategyFactory discountStrategyFactory;
    
        public void discount(OrderBO orderBO) {
            DiscountStrategy discountStrategy = discountStrategyFactory.getStrategy(orderBO.getType());
            if (null == discountStrategy) {
                throw new RuntimeException("无优惠策略");
            }
            discountStrategy.discount(orderBO);
        }
    }
    

    3.1.2 物流策略

    // 物流策略
    public interface ExpressStrategy {
        public void weighing(OrderBO orderBO);
    }
    
    // A类型订单物流策略
    @Component
    public class TypeAExpressStrategy implements ExpressStrategy {
    
        @Override
        public void weighing(OrderBO orderBO) {
            if (orderBO.getWeight() > 9) {
                throw new RuntimeException("超过物流最大重量");
            }
        }
    }
    
    // B类型订单物流策略
    @Component
    public class TypeBExpressStrategy implements ExpressStrategy {
    
        @Override
        public void weighing(OrderBO orderBO) {
            if (orderBO.getWeight() > 8) {
                throw new RuntimeException("超过物流最大重量");
            }
        }
    }
    
    // C类型订单物流策略
    @Component
    public class TypeCExpressStrategy implements ExpressStrategy {
    
        @Override
        public void weighing(OrderBO orderBO) {
            if (orderBO.getWeight() > 7) {
                throw new RuntimeException("超过物流最大重量");
            }
        }
    }
    
    // 物流策略工厂
    @Component
    public class ExpressStrategyFactory implements InitializingBean {
        private Map<String, ExpressStrategy> strategyMap = new HashMap<>();
    
        @Resource
        private TypeAExpressStrategy typeAExpressStrategy;
        @Resource
        private TypeBExpressStrategy typeBExpressStrategy;
        @Resource
        private TypeCExpressStrategy typeCExpressStrategy;
    
        @Override
        public void afterPropertiesSet() throws Exception {
            strategyMap.put(OrderTypeEnum.A_TYPE.getCode(), typeAExpressStrategy);
            strategyMap.put(OrderTypeEnum.B_TYPE.getCode(), typeBExpressStrategy);
            strategyMap.put(OrderTypeEnum.C_TYPE.getCode(), typeCExpressStrategy);
        }
    
        public ExpressStrategy getStrategy(String type) {
            return strategyMap.get(type);
        }
    }
    
    // 物流策略执行器
    @Component
    public class ExpressStrategyExecutor {
        private ExpressStrategyFactory expressStrategyFactory;
    
        public void weighing(OrderBO orderBO) {
            ExpressStrategy expressStrategy = expressStrategyFactory.getStrategy(orderBO.getType());
            if (null == expressStrategy) {
                throw new RuntimeException("无物流策略");
            }
            expressStrategy.weighing(orderBO);
        }
    }
    

    3.1.3 退款策略

    // 退款策略
    public interface RefundStrategy {
        public void supportRefund(OrderBO orderBO);
    }
    
    // A类型订单退款策略
    @Component
    public class TypeARefundStrategy implements RefundStrategy {
    
        @Override
        public void supportRefund(OrderBO orderBO) {
            orderBO.setRefundSupport(Boolean.FALSE);
        }
    }
    
    // B类型订单退款策略
    @Component
    public class TypeBRefundStrategy implements RefundStrategy {
    
        @Override
        public void supportRefund(OrderBO orderBO) {
            orderBO.setRefundSupport(Boolean.TRUE);
        }
    }
    
    // C类型订单退款策略
    @Component
    public class TypeCRefundStrategy implements RefundStrategy {
    
        @Override
        public void supportRefund(OrderBO orderBO) {
            orderBO.setRefundSupport(Boolean.TRUE);
        }
    }
    
    // 退款策略工厂
    @Component
    public class RefundStrategyFactory implements InitializingBean {
        private Map<String, RefundStrategy> strategyMap = new HashMap<>();
    
        @Resource
        private TypeARefundStrategy typeARefundStrategy;
        @Resource
        private TypeBRefundStrategy typeBRefundStrategy;
        @Resource
        private TypeCRefundStrategy typeCRefundStrategy;
    
        @Override
        public void afterPropertiesSet() throws Exception {
            strategyMap.put(OrderTypeEnum.A_TYPE.getCode(), typeARefundStrategy);
            strategyMap.put(OrderTypeEnum.B_TYPE.getCode(), typeBRefundStrategy);
            strategyMap.put(OrderTypeEnum.C_TYPE.getCode(), typeCRefundStrategy);
        }
    
        public RefundStrategy getStrategy(String type) {
            return strategyMap.get(type);
        }
    }
    
    // 退款策略执行器
    @Component
    public class RefundStrategyExecutor {
        private RefundStrategyFactory refundStrategyFactory;
    
        public void supportRefund(OrderBO orderBO) {
            RefundStrategy refundStrategy = refundStrategyFactory.getStrategy(orderBO.getType());
            if (null == refundStrategy) {
                throw new RuntimeException("无退款策略");
            }
            refundStrategy.supportRefund(orderBO);
        }
    }
    

    3.2 横向做编排

    横向维度表示场景,一种订单类型在广义上可以认为是一种业务场景,在场景中我们要将独立的策略进行串联,模板方法设计模式适用于这种场景。

    模板方法模式定义一个操作中的算法骨架,一般使用抽象类定义算法骨架。抽象类同时定义一些抽象方法,这些抽象方法延迟到子类实现,这样子类不仅遵守了算法骨架约定,也实现了自己的算法。既保证了规约也兼顾灵活性。这就是用抽象构建框架,用实现扩展细节。

    // 创建订单服务
    public interface CreateOrderService {
        public void createOrder(OrderBO orderBO);
    }
    
    // 抽象创建订单流程
    public abstract class AbstractCreateOrderFlow {
    
        @Resource
        private OrderMapper orderMapper;
    
        public void createOrder(OrderBO orderBO) {
            // 参数校验
            if (null == orderBO) {
                throw new RuntimeException("参数异常");
            }
            if (OrderTypeEnum.isNotValid(orderBO.getType())) {
                throw new RuntimeException("参数异常");
            }
            // 计算优惠
            discount(orderBO);
            // 计算重量
            weighing(orderBO);
            // 退款支持
            supportRefund(orderBO);
            // 保存数据
            OrderDO orderDO = new OrderDO();
            BeanUtils.copyProperties(orderBO, orderDO);
            orderMapper.insert(orderDO);
        }
    
        public abstract void discount(OrderBO orderBO);
    
        public abstract void weighing(OrderBO orderBO);
    
        public abstract void supportRefund(OrderBO orderBO);
    }
    
    // 实现创建订单流程
    @Service
    public class CreateOrderFlow extends AbstractCreateOrderFlow {
    
        @Resource
        private DiscountStrategyExecutor discountStrategyExecutor;
        @Resource
        private ExpressStrategyExecutor expressStrategyExecutor;
        @Resource
        private RefundStrategyExecutor refundStrategyExecutor;
    
        @Override
        public void discount(OrderBO orderBO) {
            discountStrategyExecutor.discount(orderBO);
        }
    
        @Override
        public void weighing(OrderBO orderBO) {
            expressStrategyExecutor.weighing(orderBO);
        }
    
        @Override
        public void supportRefund(OrderBO orderBO) {
            refundStrategyExecutor.supportRefund(orderBO);
        }
    }
    

    3.3 复杂架构设计

    上述实例业务和代码并不复杂,其实复杂业务场景也不过是简单场景的叠加和交织,我们无外乎也是通过纵向做隔离、横向做编排寻求答案。

    07 纵向隔离横向编排.jpg

    纵向维度抽象出能力池这个概念,能力池中有一个一个能力,不同的能力按照不同业务维度聚合,例如优惠能力池,物流能力池,退款能力池。我们可以看到两种程度的隔离性,能力池之间相互隔离,能力之间也相互隔离。

    横向维度将能力从能力池选出来,按照业务需求串联在一起,形成不同业务流程。因为能力可以任意组合,所以体现了很强的灵活性。除此之外,不同能力既可以串行执行,如果不同能力之间没有依赖关系,也可以如同流程Y一样并行执行,提升执行效率。


    4 数据分片如何应用纵横思维

    现在有一个电商数据库存放订单、商品、支付三张业务表。随着业务量越来越大,这三张业务数据表也越来越大,查询性能显著降低,数据拆分势在必行。那么数据拆分可以从纵向和横向两个维度进行。


    4.1 纵向分表

    纵向拆分就是按照业务拆分,我们将电商数据库拆分成三个库,订单库、商品库。支付库,订单表在订单库,商品表在商品库,支付表在支付库。这样每个库只需要存储本业务数据,物理隔离不会互相影响。

    02 纵向分表.jpg


    4.2 横向分表

    按照纵向拆分方案,现在我们已经有三个库了,平稳运行了一段时间。但是随着业务增长,每个单库单表的数据量也越来越大,逐渐到达瓶颈。

    这时我们就要对数据表进行横向拆分,所谓横向拆分就是根据某种规则将单库单表数据分散到多库多表,从而减小单库单表的压力。

    横向拆分策略有很多方案,最重要的一点是选好ShardingKey,也就是按照哪一列进行拆分,怎么分取决于我们访问数据的方式。


    4.2.1 范围分片

    如果我们选择的ShardingKey是订单创建时间,那么分片策略是拆分四个数据库,分别存储每季度数据,每个库包含三张表,分别存储每个月数据:

    03 横向分表_范围分表.jpg

    这个方案的优点是对范围查询比较友好,例如我们需要统计第一季度的相关数据,查询条件直接输入时间范围即可。这个方案的问题是容易产生热点数据。例如双11当天下单量特别大,就会导致11月这张表数据量特别大从而造成访问压力。


    4.2.2 查表分片

    查表法是根据一张路由表决定ShardingKey路由到哪一张表,每次路由时首先到路由表里查到分片信息,再到这个分片去取数据。我们分析一个查表法思想应用实际案例。

    Redis官方在3.0版本之后提供了集群方案RedisCluster,其中引入了哈希槽(slot)这个概念。一个集群固定有16384个槽,在集群初始化时这些槽会平均分配到Redis集群节点上。每个key请求最终落到哪个槽计算公式是固定的:

    SLOT = CRC16(key) mod 16384
    

    一个key请求过来怎么知道去哪台Redis节点获取数据?这就要用到查表法思想:

    (1) 客户端连接任意一台Redis节点,假设随机访问到节点A
    (2) 节点A根据key计算出slot值
    (3) 每个节点都维护着slot和节点映射关系表
    (4) 如果节点A查表发现该slot在本节点,直接返回数据给客户端
    (5) 如果节点A查表发现该slot不在本节点,返回给客户端一个重定向命令,告诉客户端应该去哪个节点请求这个key的数据
    (6) 客户端向正确节点发起连接请求
    

    查表法方案优点是可以灵活制定路由策略,如果我们发现有的分片已经成为热点则修改路由策略。缺点是多一次查询路由表操作增加耗时,而且路由表如果是单点也可能会有单点问题。


    4.2.3 哈希分片

    现在比较流行的分片方法是哈希分片,相较于范围分片,哈希分片可以较为均匀将数据分散在数据库中。我们现在将订单库拆分为4个库编号为[0,3],每个库包含3张表编号为[0,2],如下图如所示:

    04 横向分表_哈希分表_1.jpg

    我们选择使用orderId作为ShardingKey,那么orderId=100这个订单会保存在哪张表?因为是分库分表,第一步确定路由到哪一个库,取模计算结果表示库表序号:

    db_index = 100 % 4 = 0
    

    第二步确定路由到哪一张表:

    table_index = 100 % 3 = 1
    

    第三步数据路由到0号库1号表:

    04 横向分表_哈希分表_2.jpg

    在实际开发中路由逻辑并不需要我们手动实现,因为有许多开源框架通过配置就可以实现路由功能,例如ShardingSphere、TDDL框架等等。


    5 文章总结

    复杂问题不过是简单问题的组合和交织,横向和纵向维度拆分问题不失为一种好方法。纵向做隔离是指将不同业务形态进行隔离,能力池之间进行隔离,能力之间也进行隔离。横向做编排是指从能力池中灵活选择能力,进行组合和编排,形成各异的业务流程。希望本文对大家有所帮助。

    欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我个人微信「java_front」一起交流学习

    展开全文
  • 数据质量管理的50检查项,如下表: 编号 数据质量维度 检查对象 检查项 检查项说明 1 有效性 数据行数 有效性检查,单字段、详细结果 将输入数据的值与一既定的值域作比较 2 有效性 汇总数据 有效性检查,卷积...

    大数据时代,数据资产及其价值利用能力逐渐成为构成企业核心竞争力的关键要素;然而,大数据应用必须建立在质量可靠的数据之上才有意义,建立在低质量甚至错误数据之上的应用有可能与其初心南辕北辙、背道而驰。因此,数据质量正是企业应用数据的瓶颈,高质量的数据可以决定数据应用的上限,而低质量的数据则必然拉低数据应用的下限。

    01. 数据质量定义

    数据质量的高低代表了该数据满足数据消费者期望的程度,这种程度基于他们对数据的使用预期。数据质量必须是可测量的,把测量的结果转化为可以理解的和可重复的数字,使我们能够在不同对象之间和跨越不同时间进行比较。 数据质量管理是通过计划、实施和控制活动,运用质量管理技术度量、评估、改进和保证数据的恰当使用。

    02. 数据质量维度

    1、准确性:数据不正确或描述对象过期

    2、合规性:数据是否以非标准格式存储

    3、完备性:数据不存在

    4、及时性:关键数据是否能够及时传递到目标位置

    5、一致性:数据冲突

    6、重复性:记录了重复数据

    03. 数据质量分析

    数据质量分析的主要任务就是检查数据中是否存在脏数据,脏数据一般是指不符合要求以及不能直接进行相关分析的数据。脏数据包括以下内容:

    1、缺省值

    2、异常值

    3、不一致的值

    4、重复数据以及含有特殊符号(如#、¥、*)的数据

    我们已经知道了脏数据有4个方面的内容,接下来我们逐一来看这些数据的产生原因,影响以及解决办法。

    第一、缺省值分析

    产生原因:

    1、有些信息暂时无法获取,或者获取信息的代价太大

    2、有些信息是被遗漏的,人为或者信息采集机器故障

    3、属性值不存在,比如一个未婚者配偶的姓名、一个儿童的固定收入

    影响:

    1、会丢失大量的有用信息

    2、数据额挖掘模型表现出的不确定性更加显著,模型中蕴含的规律更加难以把握

    3、包含空值的数据回事建模过程陷入混乱,导致不可靠输出

    解决办法:

    通过简单的统计分析,可以得到含有缺失值的属性个数,以及每个属性的未缺失数、缺失数和缺失率。删除含有缺失值的记录、对可能值进行插补和不处理三种情况。

    第二、异常值分析

    产生原因:

    业务系统检查不充分,导致异常数据输入数据库

    影响:

    不对异常值进行处理会导致整个分析过程的结果出现很大偏差

    解决办法:

    可以先对变量做一个描述性统计,进而查看哪些数据是不合理的。最常用的统计量是最大值和最小值,用力啊判断这个变量是否超出了合理的范围。如果数据是符合正态分布,在原则下,异常值被定义为一组测定值中与平均值的偏差超过3倍标准差的值,如果不符合正态分布,也可以用原理平均值的多少倍标准差来描述。

    第三、不一致值分析

    产生原因:

    不一致的数据产生主要发生在数据集成过程中,这可能是由于被挖掘的数据是来自不同的数据源、对于重复性存放的数据未能进行一致性更新造成。例如,两张表中都存储了用户的电话号码,但在用户的号码发生改变时只更新了一张表中的数据,那么两张表中就有了不一致的数据。

    影响:

    直接对不一致的数据进行数据挖掘,可能会产生与实际相悖的数据挖掘结果。

    解决办法:

    注意数据抽取的规则,对于业务系统数据变动的控制应该保证数据仓库中数据抽取最新数据

    第四、重复数据及特殊数据

    产生原因:

    业务系统中未进行检查,用户在录入数据时多次保存。或者因为年度数据清理导致。特殊字符主要在输入时携带进入数据库系统。

    影响:

    统计结果不准确,造成数据仓库中无法统计数据

    解决办法:

    在ETL过程中过滤这一部分数据,特殊数据进行数据转换。

    04. 数据质量管理

    大多数企业都没有一个很好的数据质量管理的机制,因为他们不理解其数据的价值,并且他们不认为数据是一个组织的资产,而把数据看作创建它的部门领域内的东西。缺乏数据质量管理将导致脏数据、冗余数据、不一致数据、无法整合、性能底下、可用性差、责任缺失、使用系统用户日益不满意IT的性能。

    在做数据分析之前一般都应该初步对数据进行评估。初步数据评估通过数据报告来完成的,数据报告通常在准备把数据存入数据仓库是做一次,它是全面跨数据集的,它描述了数据结构、内容、规则、和关系的概况。通过应用统计方法返回一组关于数据的标准特征,包括数据类型、字段长度、列基数、粒度、值、格式、模式、规则、跨列和跨表的数据关系,以及这些关系的基数。初步评估报告的目的是获得对数据和环境的了解,并对数据的状况进行描述。

    数据质量管理的50个检查项,如下表:

    编号

    数据质量维度

    检查对象

    检查项

    检查项说明

    1

    有效性

    数据行数

    有效性检查,单字段、详细结果

    将输入数据的值与一个既定的值域作比较

    2

    有效性

    汇总数据

    有效性检查,卷积汇总

    汇总有效性检查的详细结果,将卷积的有效/无效值计数和百分比与历史水平作比较

    3

    重复性

    数据行数

    重复性检查,单字段、详细结果

    将输入数据的值与一个既定的值域数据作比较,检查数据是否重复

    4

    重复性

    汇总数据

    重复性检查,卷积汇总

    汇总重复性检查的详细结果,将卷积的重复数据计数和百分比与历史水平作比较

    5

    一致性

    数据行数

    一致性剖析

    合理性检查,将记录数据的分布,与国企填充相同的字段的数据实例作比较

    6

    一致性

    汇总数据

    数据集内容的一致性,所表示的实体的不重复计数和记录数比率

    合理性检查,将数据集内所表示的实体的不同值计数与阈值、历史计数、或总记录数作比较

    7

    一致性

    汇总数据

    数据集内容的一致性,二个所表示的实体的不重复计数的比率

    合理性检查,将重要字段/实体的不同值计数的比率与阈值或历史比率作比较

    8

    一致性

    数据行数

    一致性多列剖析

    合理性检查,为了测试业务规则,将跨多个字段的值的记录数分布和历史百分比作比较

    9

    一致性

    日期时间类型检查

    表内时序与业务规则的一致性

    合理性检查,将日期与时序的业务规则作比较

    10

    一致性

    日期时间类型检查

    用时一致性

    合理性检查,将经过的时间与过去填充相同字段的数据的实例作比较

    11

    一致性

    数值类型检查

    数额字段跨二级字段计算结果的一致性

    合理性检查,将跨一个或多个二级字段的数额列的计算结果、数量总和、占总数的百分比和平均数量与历史计数和百分比作比较,用限定符缩小比较结果

    12

    完整性/有效性

    数据行数

    有效性检查,表内多列,详细结果

    将同一个表中相关列的值与映射关系或业务规则中的值作比较

    13

    完整性/完备性

    接收数据状态

    数据集的完备性——重复记录的合理性检查

    合理性检查,将数据集中重复记录占总记录的比例与数据集以前的实例的这个比例作比较

    14

    完备性

    数据接收

    数据集的完备性——将大小与过去的大小作比较

    合理性检查,将输入的大小与以前运行同样的过程时的输入大小、文件记录数据、消息的数目或速率、汇总数据等作比较

    15

    完备性

    接收数据状态

    字段内容的完备性——来自数据源的默认值

    合理性检查,将数据源提供的关键字段的默认值记录数据和百分比与一个既定的阈值或历史数量和百分比作比较

    16

    完备性

    接收数据状态

    基于日期标准的数据集的合理性

    确保关键日期字段的最小和最大日期符合某个合理性规则

    17

    完备性

    数据处理

    数据集的完备性——拒绝记录的理由

    合理性检查,将出于特定原因而被删除的记录数据和百分比与一个既定的阈值或历史数据和百分比作比较

    18

    完备性

    数据处理

    经过一个流程的数据集的完备性——输入和输出的利率

    合理性检查,将处理的输入和输出之间的比率与数据集以前的实例的这个比率作比较

    19

    完备性

    数值类型检查

    字段内容的完备性——汇总的数额字段数的比率

    数额字段合理性检查,将输入和输出数额字段汇总数的比率与数据集以前的实例的比率作比较,用于不完全平衡

    20

    完备性

    数据处理

    字段内容的完备性——推导的默认值

    合理性检查,将推导字段的默认值记录数和百分比与一个既定的阈值或历史数量和百分比作比较

    21

    及时性

    流程处理检查

    用于处理的数据的交付及及时性

    把数据交付的实际时间与计划数据交付时间作比较

    22

    及时性

    数据处理

    数据处理用时

    合理性检查,将处理用时和历史处理用时或一个既定的时间限制作比较

    23

    及时性

    流程处理检查情况

    供访问的数据的及时可用性

    将数据实际可供数据的消费者访问的时间与计划的数据可用时间作比较

    24

    一致性

    数据模型

    一个字段内的格式一致性

    评估列属性和数据在字段内数据格式一致性

    25

    一致性

    数据模型

    一个字段默认值使用的一致性

    评估列属性和数据在可被赋予默认值的每个字段中的默认值

    26

    完整性/一致性

    数据模型

    跨表的格式一致性

    评估列属性和数据在整个数据库中相同数据类型的字段内数据格式的一致性

    27

    完整性/一致性

    数据模型

    跨表的默认值使用的一致性

    评估列属性和数据在相同数据类型的字段默认值上的一致性

    28

    完备性

    总体数据库内容

    数据集的完备性——元数据和参考数据的充分性

    评估元数据和参考数据的充分性

    29

    一致性

    汇总数据日期检查

    按聚合日期汇总的记录数的一致性

    合理性检查,把与某个聚合日期关联的记录数和百分比与历史记录数和百分比作比较

    30

    一致性

    汇总数据日期检查

    按聚合日期汇总的数额字段数据的一致性

    合理性检查,把按聚合日期汇总的数额字段数据总计和百分比与历史总计和百分比

    31

    一致性

    总体数据库内容

    与外部基准比较的一致性

    把数据质量测量结果与一组基准,如行业或国家为类似的数据建立的外部测量基准作比较

    32

    一致性

    总体数据库内容

    数据集的完备性——针对特定目的的总体充分性

    把宏观数据库内容(例如:数据域、记录数、数据的历史广度、表示的实体)与特定数据用途的需求作比较

    33

    一致性

    总体数据库内容

    数据集的完备性——测量和控制的总体充分性

    评估测量和控制的成效

    34

    完整性/有效性

    跨库跨表数据检查

    有效性检查,跨表,详细结果

    比较跨表的映射或业务规则的关系中的值,以保证数据关联一致性

    35

    完整性/一致性

    跨库跨表数据检查

    跨表多列剖析一致性

    跨表合理性检查,将跨相关表的字段的值的记录数据分布于历史百分比作比较,用于测试遵从业务规则的情况

    36

    完整性/一致性

    跨库跨表时序检查

    跨表的时序与业务规则的一致性

    跨表合理性检查,对日期值与跨表的业务规则进行时序比较

    37

    完整性/一致性

    跨表的数值类型检查

    跨表数额列计算结果的一致性

    跨表合理性检查,比较相关表的汇总数额字段总计,占总计百分比、平均值或它们之间的比率

    38

    完整性/一致性

    跨表的汇总数据日期检查

    按聚合日期汇总跨表数额列的一致性

    跨表合理性检查,比较相关表的按聚合日期汇总的数额字段总计、占总计百分比

    39

    完整性/完备性

    跨库跨表数据检查

    父/子参考完整性

    确定父表/子表之间的参考完整性,以找出无父记录的子记录和值

    40

    完整性/完备性

    跨库跨表数据检查

    子/父参考完整性

    确定父表/子表之间的参考完整性,以找出无子记录的父记录和值

    41

    完整性/完备性

    接收数据状态

    数据集的完备性——重复数据删除

    确定并删除重复记录

    42

    完备性

    数据接收

    数据集的完备性——对于处理的可用性

    对于文件,确认要处理的所有文件都可用

    43

    完备性

    数据接收

    数据集的完备性——记录数与控制记录相比

    对于文件,对文件中的记录数据和在一个控制记录中记载的记录数作比较

    44

    完备性

    数据接收

    数据集的完备性——汇总数额字段数据

    对于文件,对数额字段的汇总值和在一个控制记录中的汇总值作比较

    45

    完备性

    接收数据状态

    记录的完备性——长度

    确保记录的长度满足已定义的期望

    46

    完备性

    接收数据状态

    字段的完备性——不可为空的字段

    确保所有不可为空的字段都被填充

    47

    完备性

    接收数据状态

    基于日期标准的数据集的完备性

    确保关键日期字段的最小和最大日期符合确定加载数据参数的规定范围

    48

    完备性

    接收数据状态

    字段内容的完备性——接收到的数据缺少要处理的关键字段

    在处理记录前检测字段的填充情况

    49

    完备性

    数据处理

    数据集的完备性——经过一个流程的记录数据的平衡

    整个数据处理过程的记录数、被拒绝的记录数据平衡,包括重复记录数平衡,用于完全平衡的情况

    50

    完备性

    数据处理

    经过一个流程的数据集的完备性—— 数额字段的平衡

    整个过程中的数额字段内容平衡,用于完全平衡的情况

    写在最后的话

    数据报告中列出了很多的检查项都是围绕数据质量管理相关的检查,所以做一个数据分析项目前一定要知道客户的数据质量情况。如果数据质量很糟糕,最终影响的是项目分析的实际效果。例如,用户业务系统中客户信息只输入了客户名称,要分析客户类型就会存在缺省值。当然有一些维度属性我们可以通过事实表反算数据进入维度表来补充维度属性。个人建议在数据分析项目中一定要对维度属性进行评估,在项目处理前利用简单的模型告诉客户能够出具的效果。

    识别 下方二 维码 ,即可关注公众号获取最新大厂技术

    展开全文
  • 字面上可能不太好理解,实际上这意思是可以根据要求对特定的用户访问特定的事务请求进行完整的追踪,包括在整个请求过程中涉及到的第二个维度要求中发现的服务和组件。例如当发现性能问题的时候,可以跟踪一...
  • NULL 博文链接:https://youyuwangzi.iteye.com/blog/642012
  • 使用Numpy(下面简称np)中的sum函数对某一维度求和时,由于该维度会在求和后变成一数,所以所得结果的这一维度为空。 比如下面的例子: a = np.array([[1,2,3],[4,5,6]]) b = np.sum(a,axis=1) print(b.shape) #...
  • 维度的变换

    千次阅读 2022-01-29 17:05:32
    view 和 reshape操作 二者的功能和用法是相同的,不过要保证...b = a.view(4,28*28) #丢失两个维度 print(b) print(b.shape) c = a.view(4*28,28) #丢失两个维度 d = a.view(4*1,28,28) #丢失一个维度 e = a.resh...
  • a = np.random.randn(5) >>> print(a) [-0.58914551 0.01654543 -0.82039811 0.07362631 0.6865398 ] >>> print(a.shape) (5,) #列数不确定,不是列向量,避免上述用法 >>> print(a.T) ...
  • 3 七大维度 我认为一份完整技术方案应该至少具有七大维度,每个维度描述系统的一侧面,组合在一起最终描绘出整个系统,这些维度分别是: 四色分领域 用例看功能 流程三剑客 领域与数据 纵横做设计 分层看架构 ...
  • 可能在贯穿到整个验证系统思想里面,我们都会不断重复验证人员该具备的素质。为了可以将抽象的词汇具象出来,我们列出了验证人员在... 完备性:该维度要求验证的充分。无论你从项目经理、系统人员、设计人员还是验...
  • ”很显然,该表述方式与前面所说的教学目标截然不同,从具体内容中,我们没有看到“使学生能够...”等的表达形式,三目标尽管没有写明哪一目标是属于哪一个维度,但是,这三方面的目标表述中都没有出现“学生...
  • 企业流程运行现状评估的5个维度

    万次阅读 2018-05-11 13:32:13
    下面总结了流程评估的16字目的和流程评估的维度。非常实用!一、流程评估的目的导致企业经营不佳、竞争力差、管理失控等多种问题的原因是非常综合的,主要源自于战略(执行)、流程设计,也有流程执行等诸多原因。...
  • 根据这些情况进行分析,得到了一新的软件需求评审框架,这新框架由5个维度组成: 1,组织形式;2,时机;3,侧重;4,评审者;5,对象 分析了分别在传统开发和敏捷开发下的典型需求评审情境,显示新框架能够...
  • 20世纪十年代电视的出现,让我们从单个听觉感知的维度升级到视听维度,是第一次升维;从视听到互动的互联网,以及智能手机成为我们身体延伸一部分的移动互联网,是又一次升维;而这一次被命名为元宇宙的升维则是从...
  • 我们学员在面试中遇到这样一问题,那就是你这教育项目在做需求调研的时候分为哪几个维度?日常工作中我们经常会遇到领导的一句话需求,我要做XX系统,XXX时间之前做好给我,然后就剩下产品经...
  • 引言本篇介绍tensor的维度变化。维度变化改变的是数据的理解方式!view/reshape:大小不变的条件下,转变shapesqueeze/unsqueeze:减少/增加维度transpose/t/permute:转置,单次/多次交换expand/repeat:维度扩展...
  • 数据质量与数据质量八个维度指标

    千次阅读 2020-03-30 11:34:34
    数据质量与数据质量八个维度指标 数据的质量直接影响着数据的价值,并且直接影响着数据分析的结果以及我们以此做出的决策的质量。质量不高的数据不仅仅是数据本身的问题,还会影响着企业经营管理决策;错误的数据还...
  • 很多企业都认识到自动化运维的重要性,这是走向规模扩大化的必经之路,同时可以减轻运维工程师的负担。一完善的运维系统应该是怎么样的?运维系统实现全面自动化应该怎么做,从哪里...
  • 五个维度看待GIS GIS发展的五个维度 看待GIS 表达维度 『从2维、2.5维、3维、时空维正向高维空间发展』(数字地球的三维地球;智慧城市时空的四维地球;大数据时代的高维) 描述内容 『从空间+属性,向...
  • 技术管理的维度

    千次阅读 2019-08-02 10:47:03
    如何把这三大维度通过一定的方式展示给开发人员,从而让开发人员能够快速和准确的理解进而完成转型是我们首先需要明确的一核心问题。针对该问题,很难通过一面面俱到的模型或视图做出完整的回答。我们在思路上也...
  • 数据仓库系列4-维度

    千次阅读 2021-12-02 10:58:10
    维度表技术基础1.1 维度表结构1.2 维度代理键1.3 自然键、持久键和超自然键1.4 下钻1.5 退化维度1.6 非规范化扁平维度1.7 多层次维度1.8 文档属性的标识与指示器1.9 维度表中的空值属性1.10 日历日期维度1.11 扮演...
  • 维度建模方法论

    千次阅读 2022-02-11 15:20:21
    维度建模方法 一、前言 本人学习《数仓工具箱》的学习总结,纯学习分享,供大家参考。 二、经典数仓架构理论 围绕着维度建模,那就不得不了解,早期的数据仓库构架方法。这里介绍一下两经典的数仓架构理论。 2.1...
  • 数据质量评估的六主要维度 DAMA版权所有, 翻译修订by大数据庞涛13811850730 摘要 本文描述了评估数据质量的六方面,由英国DAMA工作组制作 定义评估数据质量的维度 背景 ‘数据质量维度’这词已经被广泛的...
  • 维度建模的基本理论

    2021-10-26 14:27:44
    围绕三问题来展开 1、怎么组织数据仓库中的数据? 2、怎么组织才能使得数据的使用最为方便和便捷? 3、怎么组织才能使得数据仓库具有良好的可扩展性和可维护性? 维度建模两大派系 Bill Inmon(数据仓库之父)...
  • 根据不同类型的质量特性与用户满意度之间的关系,狩野教授将产品服务的质量特性分为类。 1. 基本型需求 用户对企业提供的产品或服务因素的基本要求。是用户认为产品「必须有」的属性或功能。当其特性不充足(不满足...
  • 信贷分控的九个维度

    千次阅读 2017-12-07 20:39:33
    互联网金融做大数据风控的九种维度 大数据能够进行数据变现的商业模式目前就是两,一是精准营销,典型的场景是商品推荐和精准广告投放,另外一是大数据风控,典型的场景是互联网金融的大数据风控。...
  • 数仓:维度建模

    2022-01-25 10:22:50
    ETL 及其规范、分层等所做的一切都是为了一更清晰易用的展现层。 2.数仓架构的原则: 1、底层业务的数据驱动为导向同时结合业务需求驱动 2、便于数据分析屏蔽底层复杂业务简单、完整、集成的将数据暴露给分析层 3...
  • 如何在TensorFlow张量形状中插入维度

    千次阅读 2020-12-23 14:48:44
    给定一张量 input,此操作在 input 的形状的维度索引轴中插入1的维度.该维度的索引轴从零开始;如果为该坐标轴指定负数,它将从末尾向后计数.如果您想将批维度添加到单个元素,此操作非常有用.例如,如果您有一形状...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 136,733
精华内容 54,693
关键字:

五个维度的要求