事实表和维度表的定义

 一个典型的例子是,把逻辑业务比作一个立方体,产品维、时间维、地点维分别作为不同的坐标轴,而坐标轴的交点就是一个具体的事实。也就是说事实表是多个维度表的一个交点。而维度表是分析事实的一个窗口。 

       首先介绍下数据库结构中的星型结构,该结构在位于结构中心的单个事实数据表中维护数据,其它维度数据存储在维度表中。每个维度表与事实数据表直接相关,且通常通过一个键联接到事实数据表中。星型架构是数据仓库比较流向的一种架构。

        事实表是数据仓库结构中的中央表,它包含联系事实与维度表的数字度量值和键。事实数据表包含描述业务(例如产品销售)内特定事件的数据。

        维度表是维度属性的集合。是分析问题的一个窗口。是人们观察数据的特定角度,是考虑问题时的一类属性,属性的集合构成一个维。

  • 8
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
在 Flink SQL 中,我们可以使用维表关联(Join with Lookup)将事实表维度表进行关联,从而获得更丰富的数据信息。维表关联是一种特殊的关联操作,它通常用于将一个或多个维度表关联到一个或多个事实表中。 在 Flink SQL 中,我们可以通过以下步骤进行维表关联: 1. 定义维度表事实表的表结构,包括字段名称和数据类型。 2. 加载维度表事实表的数据,并将其注册为表。 3. 使用 JOIN 操作将维度表事实表进行关联。在维度表关联时,我们通常使用 LATERAL TABLE 函数将维度表转换为一个表值函数,从而使其能够在 JOIN 操作中使用。 例如,下面是一个将订单表和用户维度表进行关联的 Flink SQL 代码示例: ``` -- 定义订单表和用户维度表的表结构 CREATE TABLE orders ( order_id BIGINT, user_id BIGINT, product_id BIGINT, amount DECIMAL(10, 2), order_time TIMESTAMP(3), WATERMARK FOR order_time AS order_time - INTERVAL '5' SECOND ) WITH ( 'connector.type' = 'kafka', 'connector.version' = 'universal', 'connector.topic' = 'orders', 'connector.startup-mode' = 'earliest-offset', 'connector.properties.bootstrap.servers' = 'localhost:9092', 'format.type' = 'json' ); CREATE TABLE users ( user_id BIGINT, username STRING, age INT, gender STRING ) WITH ( 'connector.type' = 'jdbc', 'connector.url' = 'jdbc:mysql://localhost:3306/test', 'connector.table' = 'users', 'connector.username' = 'root', 'connector.password' = '123456', 'connector.lookup.cache.max-rows' = '5000', 'connector.lookup.cache.ttl' = '10s' ); -- 使用 JOIN 操作将订单表和用户维度表进行关联 SELECT o.order_id, o.user_id, u.username, u.age, u.gender FROM orders o JOIN LATERAL TABLE(users(o.user_id)) u ON TRUE; ``` 在上面的代码中,我们使用 JOIN 操作将订单表和用户维度表进行关联,关联条件是订单表中的 user_id 字段等于用户维度表中的 user_id 字段。在关联用户维度表时,我们使用了 LATERAL TABLE 函数将用户维度表转换为一个表值函数,从而使其能够在 JOIN 操作中使用。最终,我们可以获得包含订单信息和用户信息的结果集。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值