首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用where day>to_date(20200531)快速创建物化视图刷新

如何使用where day>to_date(20200531)快速创建物化视图刷新
EN

Stack Overflow用户
提问于 2021-09-09 12:14:10
回答 2查看 296关注 0票数 0

完整代码:

代码语言:javascript
复制
create materialized view log on TABLEAU.GW_STATISTICS 
WITH ROWID,
SEQUENCE(AD_ID,day)including new values;

create materialized view log on TABLEAU.GW_CLIENTS
WITH ROWID,
SEQUENCE(id,NAME)including new values;

CREATE MATERIALIZED VIEW MV_CREATIVE_DCO_ADWORDS_2
NOLOGGING
NOCOMPRESS 
CACHE 
NOPARALLEL 
REFRESH FAST ON DEMAND 
as
   select TABLEAU.GW_STATISTICS.ROWID, 
          ACC.ROWID, 
          ACC.NAME,
          TABLEAU.GW_STATISTICS.AD_ID,
          min(TABLEAU.GW_STATISTICS.DAY),
          TABLEAU.GW_STATISTICS.DAY
     FROM TABLEAU.GW_STATISTICS, 
          TABLEAU.GW_CLIENTS ACC
    WHERE TABLEAU.GW_STATISTICS.CLIENTID=ACC.ID(+) and  TABLEAU.GW_STATISTICS.DAY>TO_DATE('20200531','yyyymmdd')
 group by TABLEAU.GW_STATISTICS.ROWID, 
          ACC.ROWID, 
          ACC.NAME,
          TABLEAU.GW_STATISTICS.AD_ID,
          TABLEAU.GW_STATISTICS.DAY;

工作创建物化视图

代码语言:javascript
复制
WHERE TABLEAU.GW_STATISTICS.CLIENTID=ACC.ID(+)

不工作创建物化视图

代码语言:javascript
复制
WHERE TABLEAU.GW_STATISTICS.CLIENTID=ACC.ID(+) 
    AND TABLEAU.GW_STATISTICS.DAY>TO_DATE('20200531','yyyymmdd')

  1. 00000 -“无法快速刷新物化视图%s. %s.%s”*原因:定义中缺少某些表的ROWID,或者外部联接的内表对联接列没有唯一的约束。*行动:具体说明力量或完整选项。如果在创建过程中获得此错误,则物化视图定义可能已经更改。请参阅关于物化视图的文档.

为什么我不能按日期添加一个过滤器?如何克服这一限制?

EN

回答 2

Stack Overflow用户

发布于 2021-09-09 12:27:12

原因:定义中缺少某些表的ROWID.

首先,您需要在选择的每个表中包含ROWID

代码语言:javascript
复制
CREATE MATERIALIZED VIEW MV_CREATIVE_DCO_ADWORDS 
NOLOGGING
NOCOMPRESS 
CACHE 
NOPARALLEL 
REFRESH FAST ON DEMAND 
as
   select TABLEAU.GW_STATISTICS.ROWID, 
          ACC.ROWID, 
          ACC.NAME,
          TABLEAU.GW_STATISTICS.AD_ID,
          min(TABLEAU.GW_STATISTICS.DAY),
          TABLEAU.GW_STATISTICS.DAY
     FROM TABLEAU.GW_STATISTICS, 
          TABLEAU.GW_CLIENTS ACC
    WHERE TABLEAU.GW_STATISTICS.CLIENTID=ACC.ID(+)
      AND TABLEAU.GW_STATISTICS.DAY>TO_DATE('20200531','yyyymmdd')
 group by TABLEAU.GW_STATISTICS.ROWID, 
          ACC.ROWID, 
          ACC.NAME,
          TABLEAU.GW_STATISTICS.AD_ID,
          TABLEAU.GW_STATISTICS.DAY;

或外部联接的内表对联接列没有唯一的约束。

而且,TABLEAU.GW_STATISTICS.CLIENTID需要有一个唯一的约束。

票数 1
EN

Stack Overflow用户

发布于 2021-09-09 14:45:55

也许你需要使用别名:

代码语言:javascript
复制
select 
      TABLEAU.GW_STATISTICS.ROWID as GW_STATISTICS_ROWID, 
      ACC.ROWID AS ACC_ROWID, 
      ACC.NAME,
      TABLEAU.GW_STATISTICS.AD_ID,
      min(TABLEAU.GW_STATISTICS.DAY) AS MIN_DAY,
      TABLEAU.GW_STATISTICS.DAY

或者尝试

代码语言:javascript
复制
 FROM (SELECT * FROM TABLEAU.GW_STATISTICS WHERE DAY > DATE '2020-05-31') STATS, 
      TABLEAU.GW_CLIENTS ACC
WHERE STATS.CLIENTID = ACC.ID(+)

我想应该是一样的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69117974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档