• Oracle LiveLabs实验:Load and Analyze Your Data with Autonomous Database


    概述

    本研讨会中的实验将引导您完成开始使用 Oracle 自治数据库的所有步骤。 首先,您将创建一个 Oracle 自治数据库实例。 然后,您将练习使用自治数据库工具和 API 从不同位置以不同格式加载数据的几种方法。 您将使用 SQL 分析数据并使用 Oracle Analytics Cloud 构建分析仪表板。

    此实验申请地址在这里

    实验帮助在这里

    此实验预估完成时间90分钟。如果不包括实验5:数据可视化,我用了2个小时。

    本实验的作者为Nilay Panchal,贡献者为Richard Green。

    Oracle MovieStream 是一种虚构的电影流服务 - 类似于您当前订阅的服务。 他们面临着许多跨行业组织所面临的典型挑战。 MovieStream 必须:

    • 更好地了解他们的客户,以确保他们喜欢这项服务
    • 以合适的价格向合适的客户提供合适的产品
    • 发展业务,成为流媒体业务的主导者

    Oracle 云提供的平台,可以高效地交付安全、有洞察力、可扩展和高性能的解决方案。 MovieStream 利用 Oracle 自治数据库和 Oracle 云基础设施 (OCI) 数据湖服务设计了他们的解决方案。他们的数据架构遵循 Oracle 参考架构企业数据仓库 - 一个集成数据湖。回顾架构是值得的,这样您就可以了解集成数据湖和数据仓库的价值 - 因为它使您能够使用所有数据回答更复杂的问题。

    在本次研讨会中,我们将从 MovieStream 架构的两个关键组件开始。 MovieStream 正在跨 Oracle 对象存储和自治数据库存储他们的数据。数据从各种来源捕获到对象存储中的着陆区。然后对这些数据进行处理(清理、转换和优化)并存储在对象存储的黄金区域中。整理数据后,将其加载到自治数据库中,由用户社区的许多(和不同的)成员进行分析。
    在这里插入图片描述

    研讨会目标

    • 供应新的 Oracle 自治数据库实例
    • 从本地计算机上的文件加载数据
    • 从对象存储桶加载数据
    • 使用 Oracle Analytics Cloud 从您的数据集中创建引人注目的仪表板
    • 加载和分析 JSON 集合
    • 从公共 REST 服务加载最新消息并运行该消息的情绪分析

    实验 1:创建 Oracle 自治数据库实例

    本实验室将引导您完成开始使用 Oracle 云上的 Oracle 自治数据库(自治数据仓库 [ADW] 或自治事务处理 [ATP]都可以。)的步骤。 在本实验中,您将预配一个新的 ADW 实例。

    创建一个Shared Infrastructure下的ADW。

    • OCPU count : 1 (默认)
    • Storage (TB) : 1 (默认)
    • Auto Scaling:勾选 (默认)
    • network access:Secure access from everywhere

    服务供应时间如下,耗时40秒:

    Mon, Nov 21, 2022, 08:32:33 UTC	到 Mon, Nov 21, 2022, 08:33:13 UTC
    
    • 1

    自治数据仓库的典型工作流程的文档见这里

    实验 2:使用免费样本数据集

    在本实验中,您将使用 SQL 工作表探索 Oracle 自治数据仓库 (ADW) 或自治事务处理 (ATP) 实例随附的示例数据集。

    本实验使用 SQL 工作表,它是 Oracle 自治数据库的数据库操作基于 Web 的界面的功能之一。

    本实验将演示对 ADW 开箱即用提供的示例数据集的查询。 ADW 提供 Oracle 销售历史示例模式星型模式基准 (SSB) 数据集。 这些数据集分别位于 SH 和 SSB 模式中。

    您将对 SSB 数据集运行基本查询,该数据集是一个 1 TB 的数据集,其中包含一个包含大约 60 亿行的事实表和几个维度表。

    任务 1:连接 SQL Worksheet

    Database Action菜单,以ADMIN用户登录。在Development部分,单击SQL。

    任务 2:在 SQL Worksheet 中运行脚本

    在SQL Worksheet中输入以下SQL并运行:

    select /* low */ c_city,c_region,count(*)
    from ssb.customer c_low
    group by c_region, c_city
    order by count(*);
    
    • 1
    • 2
    • 3
    • 4

    如果可能,ADW 还会为您缓存查询结果。 如果您多次运行相同的查询,您会注意到结果被缓存后的响应时间要短得多。以下为第1次到第5次运行的时间。

    Execution time: 0.221 seconds
    Execution time: 0.008 seconds
    Execution time: 0.008 seconds
    Execution time: 0.009 seconds
    Execution time: 0.008 seconds
    
    • 1
    • 2
    • 3
    • 4
    • 5

    实验 3:加载数据

    介绍

    在本实验中,您将使用本地文件系统中的示例数据创建和加载 Oracle 自治数据库表,将文件上传到 Oracle 云基础设施 (OCI) 对象存储,使用 OCI 对象存储上的文件中的数据创建和加载表 , 并对有错误的数据加载进行故障排除。

    您可以使用 Oracle 数据库工具以及 Oracle 和第三方数据集成工具将数据加载到新的 Oracle 自治数据库(Oracle 自治数据仓库 [ADW] 或 Oracle 自治事务处理 [ATP])中。 您可以从以下数据源加载数据:

    • 来自本地设备中的文件,或
    • 来自远程数据库中的表,或
    • 从存储在基于云的对象存储(Oracle、S3、Azure、Google)中的文件

    预计时间:30 分钟

    目标

    • 了解如何使用本地文件系统中的示例数据创建和加载 ADW 表
    • 了解如何将文件上传到 OCI 对象存储
    • 了解如何为您的自治数据库定义对象存储凭据
    • 了解如何从对象存储加载数据
    • 了解如何解决数据加载问题

    任务 1:下载示例数据以从本地文件加载

    您需要将包含 CHANNELS 信息的 .csv 文件下载到本地计算机,然后在下一个任务中使用它来填充 ADW 数据库中的 CHANNELS_LOCAL 表。 单击此链接下载示例 channels.csv 文件并将其保存到本地计算机上的目录中。此文件约1KB。

    任务 2:使用数据库操作数据加载工具加载本地数据

    Database Actions菜单,ADMIN用户登录,Data Tools 部分, 单击 DATA LOAD和LOCAL FILE,单击“下一步”,然后选择刚刚下载的文件。最后选择Run。

    这个目标表是在加载时创建的,之前并没有。

    Name             Null? Type         
    ---------------- ----- ------------ 
    CHANNEL_ID             NUMBER       
    CHANNEL_DESC           VARCHAR2(64) 
    CHANNEL_CLASS          VARCHAR2(64) 
    CHANNEL_CLASS_ID       NUMBER       
    CHANNEL_TOTAL          VARCHAR2(64) 
    CHANNEL_TOTAL_ID       NUMBER       
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    任务 3:下载用于暂存到对象存储的示例数据

    现在,您将下载一个 zip 文件,其中包含您将暂存到 OCI 对象存储的数据文件,以便在以后的任务中填充多个表。

    单击此处下载示例源文件的 zip 文件并解压,此文件约6MB。

    任务 4:导航到对象存储并创建存储桶

    在OCI Console中,进入Object Storage服务并创建bucket。bucket的名称在整个租户内必须唯一。

    任务 5:将文件上传到您的 OCI 对象存储桶

    解压刚下载的文件并上传,可以批量上传。

    任务 6:找到对象存储基 URL

    获取此 URL 的最简单方法是单击对象存储中任何已上传文件右侧的省略号菜单中的View Object Details。
    类似于linux中的dirname,之后会作为参数Bucket URI:

    $ dirname https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/chan_v3.dat
    https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o
    
    • 1
    • 2

    任务 7:创建对象存储身份验证令牌

    要从 Oracle 云基础设施 (OCI) 对象存储加载数据,您需要一个具有适当权限的 OCI 用户才能将数据读取(或上传)到对象存储。 数据库和对象存储之间的通信依赖于本机 URI 和 OCI 用户 Auth Token。

    生成Auth Token,并立即保存,因为之后就看不到了:

    BlM)****dmt6
    
    • 1

    任务 8:使用数据库操作数据加载工具从对象存储加载数据

    仍然以ADMIN用户进入Database Actions,单击Data Studio部分的DATA LOAD。

    然后选择 Administration部分的CLOUD LOCATIONS。单击右上角Add Cloud Store Location。

    • Name:ADWCLab
    • Create Credential
    • Cloud Store:Oracle
    • Credential Name:OBJ_STORE_CRED
    • Oracle Cloud Infrastructure User Name:LL38388-USER
    • Auth Token:BlM)+0[2J;g{sAWbdmt6
    • Bucket URI: https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o

    单击LOAD DATA和CLOUD STORAGE,然后下一步。将CSV文件拖拽到右边,需要改一下目标表的名字。
    在这里插入图片描述
    这两个表很小,很快就加载成功了。

    在这里插入图片描述

    任务 9:使用 PL/SQL 包 DBMS_CLOUD 从对象存储加载数据

    作为向导引导的数据加载的替代方法,您可以直接使用 PL/SQL 包 DBMS_CLOUD。 这是任何负载自动化的首选。

    为了获得最快的数据加载体验,Oracle 建议在将数据加载到 ADW 或 ATP 数据库之前将源文件上传到基于云的对象存储,例如 Oracle 云基础设施对象存储。

    要将数据从云存储中的文件加载到 Oracle 自治数据库中,请使用 PL/SQL DBMS_CLOUD 包。 DBMS_CLOUD 包支持从以下云源加载数据文件:Oracle Cloud Infrastructure Object Storage、Oracle Cloud Infrastructure Object Storage Classic、Amazon AWS S3、Microsoft Azure Cloud Storage 和 Google Cloud Storage。

    此任务显示如何使用 DBMS_CLOUD 包中的两个过程从 Oracle 云基础设施对象存储加载数据:

    • create_credential:将对象存储凭据存储在您的自治数据仓库模式中。
      您将使用此过程在 ADW 管理架构中创建对象存储凭据。
    • copy_data:将指定的源文件加载到表中。 该表必须已存在于 ADW 中
      您将使用此过程将表加载到您的管理模式,其中包含来自 Oracle 云基础设施对象存储云服务中暂存的数据文件的数据。

    与数据库操作 DATA LOAD 工具为您提供在数据加载过程中自动创建目标 Oracle 自治数据库表的选项的早期任务不同,以下使用 DBMS_CLOUD 包加载的步骤要求您预先创建目标表

    在 SQL Worksheet 中以 ADMIN 用户身份连接,复制并粘贴此代码片段以将所需的表创建到工作表中。 花点时间检查脚本。 在创建表之前,您将首先删除任何具有相同名称的表。 然后单击“运行脚本”按钮运行它。

    DROP TABLE sales;
    DROP TABLE customers;
    DROP TABLE countries;
    DROP TABLE supplementary_demographics;
    DROP TABLE costs;
    DROP TABLE times;
    DROP TABLE promotions;
    DROP TABLE products;
    DROP TABLE channels;
    
    CREATE TABLE sales (
        prod_id             NUMBER          NOT NULL,
        cust_id             NUMBER          NOT NULL,
        time_id             DATE            NOT NULL,
        channel_id          NUMBER(6)       NOT NULL,
        promo_id            NUMBER          NOT NULL,
        quantity_sold       NUMBER(10,2)    NOT NULL,
        amount_sold         NUMBER(10,2)    NOT NULL);
        
    CREATE TABLE costs (
        prod_id     NUMBER          NOT NULL,
        time_id     DATE            NOT NULL,
        promo_id    NUMBER          NOT NULL,
        channel_id  NUMBER(6)       NOT NULL,
        unit_cost   NUMBER(10,2)    NOT NULL,
        unit_price  NUMBER(10,2)    NOT NULL);
    
    CREATE TABLE times (
        time_id                     DATE            NOT NULL,
        day_name                    VARCHAR2(9)     NOT NULL,
        day_number_in_week          NUMBER(1)       NOT NULL,
        day_number_in_month         NUMBER(2)       NOT NULL,
        calendar_week_number        NUMBER(2)       NOT NULL,
        fiscal_week_number          NUMBER(2)       NOT NULL,
        week_ending_day             DATE            NOT NULL,
        week_ending_day_id          NUMBER          NOT NULL,
        calendar_month_number       NUMBER(2)       NOT NULL,
        fiscal_month_number         NUMBER(2)       NOT NULL,
        calendar_month_desc         VARCHAR2(8)     NOT NULL,
        calendar_month_id           NUMBER          NOT NULL,
        fiscal_month_desc           VARCHAR2(8)     NOT NULL,
        fiscal_month_id             NUMBER          NOT NULL,
        days_in_cal_month           NUMBER          NOT NULL,
        days_in_fis_month           NUMBER          NOT NULL,
        end_of_cal_month            DATE            NOT NULL,
        end_of_fis_month            DATE            NOT NULL,
        calendar_month_name         VARCHAR2(9)     NOT NULL,
        fiscal_month_name           VARCHAR2(9)     NOT NULL,
        calendar_quarter_desc       CHAR(7)         NOT NULL,
        calendar_quarter_id         NUMBER          NOT NULL,
        fiscal_quarter_desc         CHAR(7)         NOT NULL,
        fiscal_quarter_id           NUMBER          NOT NULL,
        days_in_cal_quarter         NUMBER          NOT NULL,
        days_in_fis_quarter         NUMBER          NOT NULL,
        end_of_cal_quarter          DATE            NOT NULL,
        end_of_fis_quarter          DATE            NOT NULL,
        calendar_quarter_number     NUMBER(1)       NOT NULL,
        fiscal_quarter_number       NUMBER(1)       NOT NULL,
        calendar_year               NUMBER(4)       NOT NULL,
        calendar_year_id            NUMBER          NOT NULL,
        fiscal_year                 NUMBER(4)       NOT NULL,
        fiscal_year_id              NUMBER          NOT NULL,
        days_in_cal_year            NUMBER          NOT NULL,
        days_in_fis_year            NUMBER          NOT NULL,
        end_of_cal_year             DATE            NOT NULL,
        end_of_fis_year             DATE            NOT NULL );
    
    CREATE TABLE products (
        prod_id                     NUMBER(6)       NOT NULL,
        prod_name                   VARCHAR2(50)    NOT NULL,
        prod_desc                   VARCHAR2(4000)  NOT NULL,
        prod_subcategory            VARCHAR2(50)    NOT NULL,
        prod_subcategory_id         NUMBER          NOT NULL,
        prod_subcategory_desc       VARCHAR2(2000)  NOT NULL,
        prod_category               VARCHAR2(50)    NOT NULL,
        prod_category_id            NUMBER          NOT NULL,
        prod_category_desc          VARCHAR2(2000)  NOT NULL,
        prod_weight_class           NUMBER(3)       NOT NULL,
        prod_unit_of_measure        VARCHAR2(20)    ,
        prod_pack_size              VARCHAR2(30)    NOT NULL,
        supplier_id                 NUMBER(6)       NOT NULL,
        prod_status                 VARCHAR2(20)    NOT NULL,
        prod_list_price             NUMBER(8,2)     NOT NULL,
        prod_min_price              NUMBER(8,2)     NOT NULL,
        prod_total                  VARCHAR2(13)    NOT NULL,
        prod_total_id               NUMBER          NOT NULL,
        prod_src_id                 NUMBER          ,
        prod_eff_from               DATE            ,
        prod_eff_to                 DATE            ,
        prod_valid                  VARCHAR2(1)     );
    
    CREATE TABLE channels (
        channel_id                  NUMBER(6)          NOT NULL,
        channel_desc                VARCHAR2(20)    NOT NULL,
        channel_class               VARCHAR2(20)    NOT NULL,
        channel_class_id            NUMBER(6)          NOT NULL,
        channel_total               VARCHAR2(13)    NOT NULL,
        channel_total_id            NUMBER(6)          NOT NULL);
    
    CREATE TABLE promotions (
        promo_id                    NUMBER(6)       NOT NULL,
        promo_name                  VARCHAR2(30)    NOT NULL,
        promo_subcategory           VARCHAR2(30)    NOT NULL,
        promo_subcategory_id        NUMBER          NOT NULL,
        promo_category              VARCHAR2(30)    NOT NULL,
        promo_category_id           NUMBER          NOT NULL,
        promo_cost                  NUMBER(10,2)    NOT NULL,
        promo_begin_date            DATE            NOT NULL,
        promo_end_date              DATE            NOT NULL,
        promo_total                 VARCHAR2(15)    NOT NULL,
        promo_total_id              NUMBER          NOT NULL);
    
    CREATE TABLE customers (
        cust_id                     NUMBER          NOT NULL,
        cust_first_name             VARCHAR2(20)    NOT NULL,
        cust_last_name              VARCHAR2(40)    NOT NULL,
        cust_gender                 CHAR(1)         NOT NULL,
        cust_year_of_birth          NUMBER(4)       NOT NULL,
        cust_marital_status         VARCHAR2(20)    ,
        cust_street_address         VARCHAR2(40)    NOT NULL,
        cust_postal_code            VARCHAR2(10)    NOT NULL,
        cust_city                   VARCHAR2(30)    NOT NULL,
        cust_city_id                NUMBER          NOT NULL,
        cust_state_province         VARCHAR2(40)    NOT NULL,
        cust_state_province_id      NUMBER          NOT NULL,
        country_id                  NUMBER          NOT NULL,
        cust_main_phone_number      VARCHAR2(25)    NOT NULL,
        cust_income_level           VARCHAR2(30)    ,
        cust_credit_limit           NUMBER          ,
        cust_email                  VARCHAR2(50)    ,
        cust_total                  VARCHAR2(14)    NOT NULL,
        cust_total_id               NUMBER          NOT NULL,
        cust_src_id                 NUMBER          ,
        cust_eff_from               DATE            ,
        cust_eff_to                 DATE            ,
        cust_valid                  VARCHAR2(1)     );
    
    CREATE TABLE countries (
        country_id                  NUMBER          NOT NULL,
        country_iso_code            CHAR(2)         NOT NULL,
        country_name                VARCHAR2(40)    NOT NULL,
        country_subregion           VARCHAR2(30)    NOT NULL,
        country_subregion_id        NUMBER          NOT NULL,
        country_region              VARCHAR2(20)    NOT NULL,
        country_region_id           NUMBER          NOT NULL,
        country_total               VARCHAR2(11)    NOT NULL,
        country_total_id            NUMBER          NOT NULL,
        country_name_hist           VARCHAR2(40));
    
    
    CREATE TABLE supplementary_demographics
      ( cust_id          		NUMBER NOT NULL,
        education        		VARCHAR2(21),
        occupation       		VARCHAR2(21),
        household_size   		VARCHAR2(21),
        yrs_residence    		NUMBER,
        affinity_card    		NUMBER(10),
        bulk_pack_diskettes 	NUMBER(10),
        flat_panel_monitor  	NUMBER(10),
        home_theater_package 	NUMBER(10),
        bookkeeping_application 	NUMBER(10),
        printer_supplies 		NUMBER(10),
        y_box_games 		NUMBER(10),
        os_doc_set_kanji 		NUMBER(10),
        comments         		VARCHAR2(4000));
    
    • 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
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165

    使用以下的代码加载数据,运行前替换尖括号中的数据,即将替换为https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o

    /* Replace  below with the URL you copied from your files in OCI Object Storage at runtime.
    */
    set define on
    define file_uri_base = ''
    
    begin
     dbms_cloud.copy_data(
        table_name =>'CHANNELS',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/chan_v3.dat',
        format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true')
     );
    
     dbms_cloud.copy_data(
        table_name =>'COUNTRIES',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/coun_v3.dat',
        format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true')
     );
    
     dbms_cloud.copy_data(
        table_name =>'CUSTOMERS',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/cust1v3.dat',
        format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS')
     );
    
     dbms_cloud.copy_data(
        table_name =>'SUPPLEMENTARY_DEMOGRAPHICS',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/dem1v3.dat',
        format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true')
     );
    
     dbms_cloud.copy_data(
        table_name =>'SALES',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/dmsal_v3.dat',
        format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD')
     );
    
     dbms_cloud.copy_data(
        table_name =>'PRODUCTS',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/prod1v3.dat',
        format => json_object('delimiter' value '|', 'quote' value '^', 'ignoremissingcolumns' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true')
     );
    
     dbms_cloud.copy_data(
        table_name =>'PROMOTIONS',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/prom1v3.dat',
        format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true')
     );
    
     dbms_cloud.copy_data(
        table_name =>'SALES',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/sale1v3.dat',
        format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD', 'blankasnull' value 'true')
     );
    
     dbms_cloud.copy_data(
        table_name =>'TIMES',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/time_v3.dat',
        format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true')
     );
    
     dbms_cloud.copy_data(
        table_name =>'COSTS',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/costs.dat',
        format => json_object('ignoremissingcolumns' value 'true', 'dateformat' value 'YYYY-MM-DD', 'blankasnull' value 'true')
     );
    end;
    /
    
    • 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
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77

    您已成功加载示例表。 您现在可以运行在 Oracle 文档的关系型分析部分的大部分示例查询。 例如,要分析 2000 年某个季度特定客户 ID 的累计销售量,您可以使用“运行脚本”按钮运行以下代码片段中的查询。 阅读有关数据仓库的文档

    SELECT c.cust_id, t.calendar_quarter_desc, TO_CHAR (SUM(amount_sold),
      '9,999,999,999.99') AS Q_SALES, TO_CHAR(SUM(SUM(amount_sold))
    OVER (PARTITION BY c.cust_id ORDER BY c.cust_id, t.calendar_quarter_desc
    ROWS UNBOUNDED
    PRECEDING), '9,999,999,999.99') AS CUM_SALES
      FROM sales s, times t, customers c
      WHERE s.time_id=t.time_id AND s.cust_id=c.cust_id AND t.calendar_year=2000
        AND c.cust_id IN (2595, 9646, 11111)
      GROUP BY c.cust_id, t.calendar_quarter_desc
      ORDER BY c.cust_id, t.calendar_quarter_desc;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    任务 10:对 DBMS_CLOUD 数据加载进行故障排除

    运行以下SQL,查询加载任务状态:

    select * from user_load_operations;
    
    ID TYPE   SID SERIAL# START_TIME               UPDATE_TIME              STATUS    OWNER_NAME TABLE_NAME                 PARTITION_NAME SUBPARTITION_NAME FILE_URI_LIST                                                                                      ROWS_LOADED LOGFILE_TABLE BADFILE_TABLE STATUS_TABLE TEMPEXT_TABLE             CREDENTIAL_NAME EXPIRATION_TIME          
    -- ---- ----- ------- ------------------------ ------------------------ --------- ---------- -------------------------- -------------- ----------------- -------------------------------------------------------------------------------------------------- ----------- ------------- ------------- ------------ ------------------------- --------------- ------------------------ 
     3 COPY 14375   59976 2022-11-21T09:43:22.102Z 2022-11-21T09:43:23.712Z COMPLETED ADMIN      CHANNELS                                                    https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/chan_v3.dat            5 COPY$3_LOG    COPY$3_BAD                 COPY$6IBDMKUVW7MSPMBVKV3B OBJ_STORE_CRED  2022-11-23T09:43:22.102Z 
     4 COPY 14375   59976 2022-11-21T09:43:23.724Z 2022-11-21T09:43:24.290Z COMPLETED ADMIN      COUNTRIES                                                   https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/coun_v3.dat           23 COPY$4_LOG    COPY$4_BAD                 COPY$USI5CNJTPTWLP51X7WDN OBJ_STORE_CRED  2022-11-23T09:43:23.724Z 
     5 COPY 14375   59976 2022-11-21T09:43:24.304Z 2022-11-21T09:43:26.619Z COMPLETED ADMIN      CUSTOMERS                                                   https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/cust1v3.dat        55500 COPY$5_LOG    COPY$5_BAD                 COPY$79JPW25ODVTG3MOI6V6B OBJ_STORE_CRED  2022-11-23T09:43:24.304Z 
     6 COPY 14375   59976 2022-11-21T09:43:26.631Z 2022-11-21T09:43:27.565Z COMPLETED ADMIN      SUPPLEMENTARY_DEMOGRAPHICS                                  https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/dem1v3.dat          4500 COPY$6_LOG    COPY$6_BAD                 COPY$ERHLCOQXJOIS4N0QUOUQ OBJ_STORE_CRED  2022-11-23T09:43:26.631Z 
     7 COPY 14375   59976 2022-11-21T09:43:27.577Z 2022-11-21T09:43:28.162Z COMPLETED ADMIN      SALES                                                       https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/dmsal_v3.dat        2804 COPY$7_LOG    COPY$7_BAD                 COPY$JD9SFL4W089LOU8KXAMF OBJ_STORE_CRED  2022-11-23T09:43:27.577Z 
     8 COPY 14375   59976 2022-11-21T09:43:28.174Z 2022-11-21T09:43:28.804Z COMPLETED ADMIN      PRODUCTS                                                    https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/prod1v3.dat           72 COPY$8_LOG    COPY$8_BAD                 COPY$QNGIIT6YAJ9P8G4UDLIC OBJ_STORE_CRED  2022-11-23T09:43:28.174Z 
     9 COPY 14375   59976 2022-11-21T09:43:28.816Z 2022-11-21T09:43:29.643Z COMPLETED ADMIN      PROMOTIONS                                                  https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/prom1v3.dat          503 COPY$9_LOG    COPY$9_BAD                 COPY$W0I7JRC2XM6LCB916GRQ OBJ_STORE_CRED  2022-11-23T09:43:28.816Z 
    10 COPY 14375   59976 2022-11-21T09:43:29.654Z 2022-11-21T09:43:33.593Z COMPLETED ADMIN      SALES                                                       https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/sale1v3.dat       916039 COPY$10_LOG   COPY$10_BAD                COPY$5DL8OEF1FRXTA5NAFTKG OBJ_STORE_CRED  2022-11-23T09:43:29.654Z 
    11 COPY 14375   59976 2022-11-21T09:43:33.605Z 2022-11-21T09:43:34.487Z COMPLETED ADMIN      TIMES                                                       https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/time_v3.dat         1826 COPY$11_LOG   COPY$11_BAD                COPY$GDJNUIRFWVLIZ3LLEY9Z OBJ_STORE_CRED  2022-11-23T09:43:33.605Z 
    12 COPY 14375   59976 2022-11-21T09:43:34.500Z 2022-11-21T09:43:35.857Z COMPLETED ADMIN      COSTS                                                       https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o/costs.dat          82112 COPY$12_LOG   COPY$12_BAD                COPY$IAW8STVR4UINTBE0WCOL OBJ_STORE_CRED  2022-11-23T09:43:34.500Z 
    
    
    Elapsed: 00:00:00.004
    10 rows selected.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    运行以下SQL,查询出错的数据加载:

    select * from user_load_operations where status='FAILED';
    
    No rows selected
    0 rows selected.
    
    • 1
    • 2
    • 3
    • 4

    要了解有关如何指定文件格式、分隔符、拒绝限制等的更多信息,请查看Autonomous Database Supplied Package ReferenceDBMS_CLOUD Package Format Options

    来看一下我们之前用到的格式选型:

    • ignoremissingcolumns - If there are more columns in the field_list than there are in the source files, the extra columns are stored as null.
    • removequotes - Removes any quotes that are around any field in the source file.
    • dateformat - Specifies the date format in the source file. The format option AUTO searches for the following formats
    • blankasnull - When set to true, loads fields consisting of spaces as null.
    • delimiter - Specifies the field delimiter. To use a special character as the delimiter, specify the HEX value of the ASCII code of the character. 一般是逗号。
    • quote - Specifies the quote character for the fields, the quote characters are removed during loading when specified. 一般是双引号。

    学到更多

    实验 4:查询外部数据

    介绍

    在本实验中,您将直接在 Oracle 云基础设施 (OCI) 对象存储上查询文件,而无需将它们加载到您的数据库中。

    任务 1:使用 DBMS_CLOUD 创建外部表

    运行以下代码,运行前替换尖括号中的值,即将替换为https://objectstorage.ap-seoul-1.oraclecloud.com/n/c4u04/b/bucket-20221121-1704-ADW/o

    /* Specify the URL that you copied from your files in OCI Object Storage in the define base_URL line below*/
     
    set define on
    define &file_uri_base = ''
     
    begin
     dbms_cloud.create_external_table(
        table_name =>'CHANNELS_EXT',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/chan_v3.dat',
        format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true'),
        column_list => 'CHANNEL_ID NUMBER,
            CHANNEL_DESC VARCHAR2(20),
            CHANNEL_CLASS VARCHAR2(20),
            CHANNEL_CLASS_ID NUMBER,
            CHANNEL_TOTAL VARCHAR2(13),
            CHANNEL_TOTAL_ID NUMBER'
     );
     
     dbms_cloud.create_external_table(
        table_name =>'COUNTRIES_EXT',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/coun_v3.dat',
        format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true'),
        column_list => 'COUNTRY_ID NUMBER ,
            COUNTRY_ISO_CODE CHAR(2) ,
            COUNTRY_NAME VARCHAR2(40) ,
            COUNTRY_SUBREGION VARCHAR2(30) ,
            COUNTRY_SUBREGION_ID NUMBER ,
            COUNTRY_REGION VARCHAR2(20) ,
            COUNTRY_REGION_ID NUMBER ,
            COUNTRY_TOTAL VARCHAR2(11) ,
            COUNTRY_TOTAL_ID NUMBER ,
            COUNTRY_NAME_HIST VARCHAR2(40)'
     );
     
     dbms_cloud.create_external_table(
        table_name =>'CUSTOMERS_EXT',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/cust1v3.dat',
        format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS'),
        column_list => 'CUST_ID NUMBER ,
            CUST_FIRST_NAME VARCHAR2(20) ,
            CUST_LAST_NAME VARCHAR2(40) ,
            CUST_GENDER CHAR(1) ,
            CUST_YEAR_OF_BIRTH NUMBER(4,0) ,
            CUST_MARITAL_STATUS VARCHAR2(20),
            CUST_STREET_ADDRESS VARCHAR2(40) ,
            CUST_POSTAL_CODE VARCHAR2(10) ,
            CUST_CITY VARCHAR2(30) ,
            CUST_CITY_ID NUMBER ,
            CUST_STATE_PROVINCE VARCHAR2(40) ,
            CUST_STATE_PROVINCE_ID NUMBER ,
            COUNTRY_ID NUMBER ,
            CUST_MAIN_PHONE_NUMBER VARCHAR2(25) ,
            CUST_INCOME_LEVEL VARCHAR2(30),
            CUST_CREDIT_LIMIT NUMBER,
            CUST_EMAIL VARCHAR2(50),
            CUST_TOTAL VARCHAR2(14) ,
            CUST_TOTAL_ID NUMBER ,
            CUST_SRC_ID NUMBER,
            CUST_EFF_FROM DATE,
            CUST_EFF_TO DATE,
            CUST_VALID VARCHAR2(1)'
     );
     
     dbms_cloud.create_external_table(
        table_name =>'SUPPLEMENTARY_DEMOGRAPHICS_EXT',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/dem1v3.dat',
        format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true'),
        column_list => 'CUST_ID NUMBER ,
            EDUCATION VARCHAR2(21),
            OCCUPATION VARCHAR2(21),
            HOUSEHOLD_SIZE VARCHAR2(21),
            YRS_RESIDENCE NUMBER,
            AFFINITY_CARD NUMBER(10,0),
            BULK_PACK_DISKETTES NUMBER(10,0),
            FLAT_PANEL_MONITOR NUMBER(10,0),
            HOME_THEATER_PACKAGE NUMBER(10,0),
            BOOKKEEPING_APPLICATION NUMBER(10,0),
            PRINTER_SUPPLIES NUMBER(10,0),
            Y_BOX_GAMES NUMBER(10,0),
            OS_DOC_SET_KANJI NUMBER(10,0),
            COMMENTS VARCHAR2(4000)'
     );
     
     dbms_cloud.create_external_table(
        table_name =>'PRODUCTS_EXT',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/prod1v3.dat',
        format => json_object('delimiter' value '|', 'quote' value '^', 'ignoremissingcolumns' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true'),
        column_list => 'PROD_ID NUMBER(6,0) ,
            PROD_NAME VARCHAR2(50) ,
            PROD_DESC VARCHAR2(4000) ,
            PROD_SUBCATEGORY VARCHAR2(50) ,
            PROD_SUBCATEGORY_ID NUMBER ,
            PROD_SUBCATEGORY_DESC VARCHAR2(2000) ,
            PROD_CATEGORY VARCHAR2(50) ,
            PROD_CATEGORY_ID NUMBER ,
            PROD_CATEGORY_DESC VARCHAR2(2000) ,
            PROD_WEIGHT_CLASS NUMBER(3,0) ,
            PROD_UNIT_OF_MEASURE VARCHAR2(20),
            PROD_PACK_SIZE VARCHAR2(30) ,
            SUPPLIER_ID NUMBER(6,0) ,
            PROD_STATUS VARCHAR2(20) ,
            PROD_LIST_PRICE NUMBER(8,2) ,
            PROD_MIN_PRICE NUMBER(8,2) ,
            PROD_TOTAL VARCHAR2(13) ,
            PROD_TOTAL_ID NUMBER ,
            PROD_SRC_ID NUMBER,
            PROD_EFF_FROM DATE,
            PROD_EFF_TO DATE,
            PROD_VALID VARCHAR2(1)'
     );
     
     dbms_cloud.create_external_table(
        table_name =>'PROMOTIONS_EXT',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/prom1v3.dat',
        format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true'),
        column_list => 'PROMO_ID NUMBER(6,0) ,
            PROMO_NAME VARCHAR2(30) ,
            PROMO_SUBCATEGORY VARCHAR2(30) ,
            PROMO_SUBCATEGORY_ID NUMBER ,
            PROMO_CATEGORY VARCHAR2(30) ,
            PROMO_CATEGORY_ID NUMBER ,
            PROMO_COST NUMBER(10,2) ,
            PROMO_BEGIN_DATE DATE ,
            PROMO_END_DATE DATE ,
            PROMO_TOTAL VARCHAR2(15) ,
            PROMO_TOTAL_ID NUMBER '
     );
     
     dbms_cloud.create_external_table(
        table_name =>'SALES_EXT',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/sale1v3.dat,&file_uri_base/dmsal_v3.dat',
        format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD', 'blankasnull' value 'true'),
        column_list => 'PROD_ID NUMBER ,
            CUST_ID NUMBER ,
            TIME_ID DATE ,
            CHANNEL_ID NUMBER ,
            PROMO_ID NUMBER ,
            QUANTITY_SOLD NUMBER(10,2) ,
            AMOUNT_SOLD NUMBER(10,2)'
     );
     
     dbms_cloud.create_external_table(
        table_name =>'TIMES_EXT',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/time_v3.dat',
        format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true'),
        column_list => 'TIME_ID DATE ,
            DAY_NAME VARCHAR2(9) ,
            DAY_NUMBER_IN_WEEK NUMBER(1,0) ,
            DAY_NUMBER_IN_MONTH NUMBER(2,0) ,
            CALENDAR_WEEK_NUMBER NUMBER(2,0) ,
            FISCAL_WEEK_NUMBER NUMBER(2,0) ,
            WEEK_ENDING_DAY DATE ,
            WEEK_ENDING_DAY_ID NUMBER ,
            CALENDAR_MONTH_NUMBER NUMBER(2,0) ,
            FISCAL_MONTH_NUMBER NUMBER(2,0) ,
            CALENDAR_MONTH_DESC VARCHAR2(8) ,
            CALENDAR_MONTH_ID NUMBER ,
            FISCAL_MONTH_DESC VARCHAR2(8) ,
            FISCAL_MONTH_ID NUMBER ,
            DAYS_IN_CAL_MONTH NUMBER ,
            DAYS_IN_FIS_MONTH NUMBER ,
            END_OF_CAL_MONTH DATE ,
            END_OF_FIS_MONTH DATE ,
            CALENDAR_MONTH_NAME VARCHAR2(9) ,
            FISCAL_MONTH_NAME VARCHAR2(9) ,
            CALENDAR_QUARTER_DESC CHAR(7) ,
            CALENDAR_QUARTER_ID NUMBER ,
            FISCAL_QUARTER_DESC CHAR(7) ,
            FISCAL_QUARTER_ID NUMBER ,
            DAYS_IN_CAL_QUARTER NUMBER ,
            DAYS_IN_FIS_QUARTER NUMBER ,
            END_OF_CAL_QUARTER DATE ,
            END_OF_FIS_QUARTER DATE ,
            CALENDAR_QUARTER_NUMBER NUMBER(1,0) ,
            FISCAL_QUARTER_NUMBER NUMBER(1,0) ,
            CALENDAR_YEAR NUMBER(4,0) ,
            CALENDAR_YEAR_ID NUMBER ,
            FISCAL_YEAR NUMBER(4,0) ,
            FISCAL_YEAR_ID NUMBER ,
            DAYS_IN_CAL_YEAR NUMBER ,
            DAYS_IN_FIS_YEAR NUMBER ,
            END_OF_CAL_YEAR DATE ,
            END_OF_FIS_YEAR DATE '
     );
     
     dbms_cloud.create_external_table(
        table_name =>'COSTS_EXT',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'&file_uri_base/costs.dat',
        format => json_object('ignoremissingcolumns' value 'true', 'dateformat' value 'YYYY-MM-DD', 'blankasnull' value 'true'),
        column_list => 'PROD_ID NUMBER ,
            TIME_ID DATE ,
            PROMO_ID NUMBER ,
            CHANNEL_ID NUMBER ,
            UNIT_COST NUMBER(10,2) ,
            UNIT_PRICE NUMBER(10,2) '
     );
    end;
    /
    
    • 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
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207

    任务 2:查询外部数据

    查询外部表,我们之上将表名加了_ext后缀:

    SELECT c.cust_id, t.calendar_quarter_desc, TO_CHAR (SUM(amount_sold),
      '9,999,999,999.99') AS Q_SALES, TO_CHAR(SUM(SUM(amount_sold))
    OVER (PARTITION BY c.cust_id ORDER BY c.cust_id, t.calendar_quarter_desc
    ROWS UNBOUNDED
    PRECEDING), '9,999,999,999.99') AS CUM_SALES
      FROM sales_ext s, times t, customers_ext c
      WHERE s.time_id=t.time_id AND s.cust_id=c.cust_id AND t.calendar_year=2000
        AND c.cust_id IN (2595, 9646, 11111)
      GROUP BY c.cust_id, t.calendar_quarter_desc
      ORDER BY c.cust_id, t.calendar_quarter_desc;
    
    Execution time: 3.239 seconds
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    查询外部表会比本地表要慢些,本地表只需Execution time: 0.002 seconds。

    学到更多

    有关查询外部数据的更多信息,请参阅文档 Querying External Data with Autonomous Data Warehouse

    实验 5:可视化您的数据

    此实验需要安装Oracle Analytics Desktop,然后连自治数据库。略。

  • 相关阅读:
    猿创征文|Axios的介绍与作用 - 大白话
    Python程序设计--学生管理系统-面向对象项目
    JDK1.8中Date_Time API使用
    网络连接错误错误代码103怎么解决
    spring1:spring简介
    Virtio-user使用简介
    云行 | 加码算力网络布局,天翼云发布南京3AZ节点
    Spring源码深度解析(六):Spring事务原理详解
    探索设计模式:观察者模式
    【面试系列】Java面试知识篇(七)
  • 原文地址:https://blog.csdn.net/stevensxiao/article/details/127966783