Sql 我正在将以下oracle查询转换为bigquery,但结果记录计数不同

Sql 我正在将以下oracle查询转换为bigquery,但结果记录计数不同,sql,oracle,google-bigquery,Sql,Oracle,Google Bigquery,我正在将以下oracle查询转换为bigquery查询,但结果(记录计数)不同,尽管查询中涉及的基表在oracle和bq中具有相同数量的记录 神谕: BQ: 甲骨文计数-1553437 BQ计数-2414413 请帮助我了解如何在oracle和bq上获得相同的计数 谢谢, Naren如果您使用了更具可读性的缩写表格别名,则可以看出几个不同之处: Oracle不尝试任何右连接 GBQ应该在WHERE中运行non-on-lastLEFT-JOIN子句中的UPPER(…)表达式,或者将表达式移动到u

我正在将以下oracle查询转换为bigquery查询,但结果(记录计数)不同,尽管查询中涉及的基表在oracle和bq中具有相同数量的记录

神谕: BQ: 甲骨文计数-1553437 BQ计数-2414413

请帮助我了解如何在oracle和bq上获得相同的计数

谢谢,
Naren

如果您使用了更具可读性的缩写表格别名,则可以看出几个不同之处:

  • Oracle不尝试任何
    右连接
  • GBQ应该在
    WHERE
    中运行
    non-on-last
    LEFT-JOIN
    子句中的
    UPPER(…)
    表达式,或者将表达式移动到ui表上的
    内部JOIN
    (但未经测试可能不会产生影响,但可读性会有所不同)
  • 表顺序可能会有所不同,尤其是使用
    内部
    外部
    联接时
Oracle(使用旧的、过时的隐式联接)

Google BigQuery(使用当前的显式联接标准)


<> P>因此,考虑表的顺序和适当的<代码>连接< /代码>,考虑下面的调整后的谷歌BigQue:

...
FROM
     `pearson-rr.GRDW_RPT.RMS_IMAGE_PROJECT_S_VW` p 
LEFT OUTER JOIN 
      `pearson-rr.oracle_grdw_grdw.rms_image_usage_info_s` ui 
   ON p.PROJECT_ID = ui.PROJECT_ID
INNER OUTER JOIN 
      `pearson-rr.oracle_grdw_grdw.rms_image_info_s` i
   ON ui.OBJECT_ID = i.OBJECT_ID AND UPPER(ui.USAGE_LABEL) NOT LIKE '%KILL%'
LEFT OUTER JOIN
      `pearson-rr.GRDW_RPT.BIC_APHEISBN00_BO_VW` b 
   ON p.PROJECT_ID = b._BIC_ZCHETIIS
LEFT OUTER JOIN
      `pearson-rr.oracle_grdw_grdw.ghepm_title` g 
   ON p.PROJECT_ID = g.ISBN10
SELECT
CAST(R_PROJECT_S.PROJECT_COPYRIGHT_YEAR AS string) COPYRIGHT_YEAR,
R_PROJECT_S.PROJECT_TITLE,
CAST(R_PROJECT_S.EDITION AS string) EDITION,
R_PROJECT_S.CIRCULATION_DESC,
R_PROJECT_S.DISTRIBUTION_DESC,
R_PROJECT_S.PROJECT_ID,
R_USAGE_INFO_S.OBJECT_ID,
UPPER(R_INFO_S.PHOTOGRAPHER) PHOTOGRAPHER,
UPPER(R_INFO_S.SOURCE_CAPTION) SOURCE_CAPTION,
BIC_APHEISBN00_BO._BIC_ZCHEAU,
BIC_APHEISBN00_BO._BIC_ZCHECPYR,
BIC_APHEISBN00_BO._BIC_ZCHEED,
BIC_APHEISBN00_BO._BIC_ZCHEPRDDE,
BIC_APHEISBN00_BO._BIC_ZCHEGRDE,
BIC_APHEISBN00_BO._BIC_ZCHSODE,
R_PROJECT_S.CHARGE_TO_ISBN,
BIC_APHEISBN00_BO._BIC_ZCHEPTIT,
R_INFO_S.SOURCE_NAME,
R_PROJECT_S.LANGUAGE_DESC,
R_PROJECT_S.PROJECT_FORMAT_DESC,
R_USAGE_INFO_S.USAGE_ID,
R_USAGE_INFO_S.PAGE,
R_USAGE_INFO_S.CHAPTER,
R_INFO_S.WORK_PROJECT_ID,
R_INFO_S.IMAGE_TYPE_DESC,
R_INFO_S.IMAGE_DESC,
R_USAGE_INFO_S.PERMISSION_TYPE_DESC,
R_USAGE_INFO_S.PERMISSION_STATUS_DESC,
R_USAGE_INFO_S.PERMISSION_USAGE_DESC,
R_USAGE_INFO_S.USAGE_LABEL,
R_USAGE_INFO_S.QUOTED_COST,
R_INFO_S.SOURCE_OBJECT_ID,
R_USAGE_INFO_S.USAGE_TYPE_DESC,
GHEPM_TITLE_PSPP.TITLE_DESCRIPTION,
BIC_APHEISBN00_BO._BIC_ZCHESOAB,
BIC_APHEISBN00_BO._BIC_ZCHEGRCD  
FROM
`domain-rr.oracle_DB_DB.R_info_s` R_INFO_S
inner join 
`domain-rr.oracle_DB_DB.R_usage_info_s` R_USAGE_INFO_S
on 
R_USAGE_INFO_S.OBJECT_ID=R_INFO_S.OBJECT_ID
right outer join
`domain-rr.DB_RPT.R_PROJECT_S_VW` R_PROJECT_S
on 
R_PROJECT_S.PROJECT_ID=R_USAGE_INFO_S.PROJECT_ID
left outer join
`domain-rr.DB_RPT.BIC_APHEISBN00_BO_VW` BIC_APHEISBN00_BO
ON
R_PROJECT_S.PROJECT_ID=BIC_APHEISBN00_BO._BIC_ZCHETIIS
left outer join
`domain-rr.oracle_DB_DB.ghepm_title` GHEPM_TITLE_PSPP
ON
R_PROJECT_S.PROJECT_ID=GHEPM_TITLE_PSPP.ISBN10
AND UPPER(R_USAGE_INFO_S.USAGE_LABEL)  NOT LIKE '%KILL%'
...
FROM
      GRDW.RMS_IMAGE_PROJECT_S_VW p,
      GRDW.RMS_IMAGE_USAGE_INFO_S ui,
      GRDW.RMS_IMAGE_INFO_S i,
      BOADMIN.BIC_APHEISBN00_BO_VW b,
      GRDW.GHEPM_TITLE g
WHERE
  ( p.PROJECT_ID = ui.PROJECT_ID(+)                      -- LEFT JOIN
  )
  AND  ( ui.OBJECT_ID = i.OBJECT_ID  )                   -- INNER JOIN
  AND  ( p.PROJECT_ID = b.BIC_ZCHETIIS(+) )              -- LEFT JOIN
  AND  ( p.PROJECT_ID = g.ISBN10(+)  )                   -- LEFT JOIN
  AND  UPPER(ui.USAGE_LABEL)  NOT LIKE  UNISTR('%KILL%')
...
FROM
      `pearson-rr.oracle_grdw_grdw.rms_image_info_s` i
INNER JOIN 
      `pearson-rr.oracle_grdw_grdw.rms_image_usage_info_s` ui 
   ON ui.OBJECT_ID = i.OBJECT_ID
RIGHT OUTER JOIN
      `pearson-rr.GRDW_RPT.RMS_IMAGE_PROJECT_S_VW` p 
   ON p.PROJECT_ID = ui.PROJECT_ID
LEFT OUTER JOIN
      `pearson-rr.GRDW_RPT.BIC_APHEISBN00_BO_VW` b 
   ON p.PROJECT_ID = b._BIC_ZCHETIIS
LEFT OUTER JOIN
      `pearson-rr.oracle_grdw_grdw.ghepm_title` g 
   ON p.PROJECT_ID = g.ISBN10
   AND UPPER(ui.USAGE_LABEL) NOT LIKE '%KILL%'
...
FROM
     `pearson-rr.GRDW_RPT.RMS_IMAGE_PROJECT_S_VW` p 
LEFT OUTER JOIN 
      `pearson-rr.oracle_grdw_grdw.rms_image_usage_info_s` ui 
   ON p.PROJECT_ID = ui.PROJECT_ID
INNER OUTER JOIN 
      `pearson-rr.oracle_grdw_grdw.rms_image_info_s` i
   ON ui.OBJECT_ID = i.OBJECT_ID AND UPPER(ui.USAGE_LABEL) NOT LIKE '%KILL%'
LEFT OUTER JOIN
      `pearson-rr.GRDW_RPT.BIC_APHEISBN00_BO_VW` b 
   ON p.PROJECT_ID = b._BIC_ZCHETIIS
LEFT OUTER JOIN
      `pearson-rr.oracle_grdw_grdw.ghepm_title` g 
   ON p.PROJECT_ID = g.ISBN10