日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

數倉加速查詢

本文以GitHub公開事件數據為例,為您介紹使用Hologres加速查詢MaxCompute,并對接BI分析工具(本文以DataV為例),實現實時分析離線數據的通用架構與核心步驟。

示例架構

搭建離線數倉時,Hologres可直接讀取離線數倉MaxCompute中的數據,并對接BI分析工具將數據實時展示在大屏中,示例架構如圖所示。

image..png

其中:

  • 待處理數據:

    本實踐使用GitHub公開事件作為示例數據,更多關于數據集的介紹請參見業務與數據認知

  • 離線數倉:

    MaxCompute是大數據計算服務,可以對海量離線數據進行處理并歸檔,構建離線數據倉庫。本實踐中使用MaxCompute已通過公共數據集存儲的GitHub事件數據。

  • 實時數倉:

    Hologres是兼容PostgreSQL協議的交互式分析引擎,與MaxCompute底層無縫打通,可以加速查詢MaxCompute數據,并為下游提供數據服務。

  • 實時大屏:

    本實踐以DataV為例,為您展示搭建實時大屏后查看并分析數據的效果。

實踐步驟

準備工作

本實踐使用已存儲在MaxCompute的Github公共事件作為示例數據,因此您無需操作離線數倉的數據集成步驟,可使用Hologres直接讀取MaxCompute中的示例數據。因此本實踐的操作可直接從讀取MaxCompute數據開始。您僅需在實踐前準備Hologres和大屏搭建產品環境。

  • 準備Hologres環境

    您需開通Hologres,創建并連接Hologres數據庫,后續在Hologres數據庫中執行命令讀取數據。

    您也可以申請Hologres的免費資源包,免費試用體驗本教程的核心步驟。Hologres提供的免費資源包介紹及申請引導請參見新用戶免費試用

  • (可選)準備大屏搭建產品:本文以DataV為例

    本文以DataV為例,為您示例搭建大屏后的效果。

讀取離線數倉數據(外部表

您可以使用外部表直接讀取MaxCompute的數據。核心步驟如下。

  1. 創建外部表。

    -- 新建schema用于創建外部表
    CREATE SCHEMA IF NOT EXISTS hologres_foreign_dataset_github_event;
    
    DROP FOREIGN TABLE IF EXISTS hologres_foreign_dataset_github_event.dwd_github_events_odps;
    
    IMPORT FOREIGN SCHEMA "bigdata_public_dataset#github_events" LIMIT TO
    (
        dwd_github_events_odps
    ) 
    FROM SERVER odps_server INTO hologres_foreign_dataset_github_event OPTIONS(if_table_exist 'error',if_unsupported_type 'error');
  2. 通過外部表讀取MaxCompute數據。

    以下以查詢昨日起最活躍項目數據為例,為您示例查詢代碼。

    說明

    通過外部表查詢MaxCompute分區表數據有最大掃描分區數限制,最多為512個分區,因此您需要在過濾條件中增加分區鍵限制,減少分區掃描量。

    SELECT
        repo_name,
        COUNT(*) AS events
    FROM
        hologres_foreign_dataset_github_event.dwd_github_events_odps
    WHERE
        ds >= (CURRENT_DATE - interval '1 day')::text
    GROUP BY
        repo_name
    ORDER BY
        events DESC
    LIMIT 5;

查詢數據(內部表)

您可以新建一個內部表,將待分析數據導入至Hologres,核心步驟如下。

  1. 創建內部表。

    -- 新建schema用于創建內表并導入數據
    CREATE SCHEMA IF NOT EXISTS hologres_dataset_github_event;
    
    DROP TABLE IF EXISTS hologres_github_event;
    
    DROP TABLE IF EXISTS hologres_dataset_github_event.hologres_github_event;
    BEGIN;
    CREATE TABLE hologres_dataset_github_event.hologres_github_event (
        id bigint,
        actor_id bigint,
        actor_login text,
        repo_id bigint,
        repo_name text,
        org_id bigint,
        org_login text,
        type text,
        created_at timestamp with time zone NOT NULL,
        action text,
        iss_or_pr_id bigint,
        number bigint,
        comment_id bigint,
        commit_id text,
        member_id bigint,
        rev_or_push_or_rel_id bigint,
        ref text,
        ref_type text,
        state text,
        author_association text,
        language text,
        merged boolean,
        merged_at timestamp with time zone,
        additions bigint,
        deletions bigint,
        changed_files bigint,
        push_size bigint,
        push_distinct_size bigint,
        hr text,
        month text,
        year text,
        ds text
    );
    CALL set_table_property('hologres_dataset_github_event.hologres_github_event', 'distribution_key', 'id');
    CALL set_table_property('hologres_dataset_github_event.hologres_github_event', 'event_time_column', 'created_at');
    CALL set_table_property('hologres_dataset_github_event.hologres_github_event', 'clustering_key', 'created_at');
    
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.id IS '事件ID';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.actor_id IS '事件發起人ID';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.actor_login IS '事件發起人登錄名';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.repo_id IS 'repoID';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.repo_name IS 'repo名稱';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.org_id IS 'repo所屬組織ID';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.org_login IS 'repo所屬組織名稱';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.type IS '事件類型';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.created_at IS '事件發生時間';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.action IS '事件行為';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.iss_or_pr_id IS 'issue/pull_request ID';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.number IS 'issue/pull_request 序號';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.comment_id IS 'comment(評論)ID';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.commit_id IS '提交記錄ID';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.member_id IS '成員ID';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.rev_or_push_or_rel_id IS 'review/push/release ID';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.ref IS '創建/刪除的資源名稱';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.ref_type IS '創建/刪除的資源類型';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.state IS 'issue/pull_request/pull_request_review的狀態';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.author_association IS 'actor與repo之間的關系';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.language IS '編程語言';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.merged IS '是否接受合并';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.merged_at IS '代碼合并時間';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.additions IS '代碼增加行數';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.deletions IS '代碼減少行數';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.changed_files IS 'pull request 改變文件數量';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.push_size IS '提交數量';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.push_distinct_size IS '不同的提交數量';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.hr IS '事件發生所在小時,如00點23分,hr=00';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.month IS '事件發生所在月,如2015年10月,month=2015-10';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.year IS '事件發生所在年,如2015年,year=2015';
    COMMENT ON COLUMN hologres_dataset_github_event.hologres_github_event.ds IS '事件發生所在日,ds=yyyy-mm-dd';
    
    COMMIT;
  2. 導入數據至內部表。

    說明

    Hologres從V2.1.17版本起支持Serverless Computing能力,針對MaxCompute大數據量離線導入、大型ETL作業等場景,使用Serverless Computing執行該類任務可以避免為實例預留計算資源,顯著提升實例穩定性、減少OOM概率,且僅需為任務單獨付費。Serverless Computing詳情請參見Serverless Computing概述

    -- (可選)推薦使用Serverless Computing執行大數據離線導入和ETL作業
    SET hg_computing_resource = 'serverless';
    
    INSERT INTO hologres_dataset_github_event.hologres_github_event
    SELECT
        *
    FROM
        hologres_foreign_dataset_github_event.dwd_github_events_odps
    WHERE
        ds >= (CURRENT_DATE - interval '1 day')::text;
    
    -- 重置配置,保證非必要的SQL不會使用serverless資源。
    RESET hg_computing_resource;
    
    -- 更新表的統計信息
    ANALYZE hologres_dataset_github_event.hologres_github_event;
  3. 查詢內部表數據。

    SELECT
        repo_name,
        COUNT(*) AS events
    FROM
        hologres_dataset_github_event.hologres_github_event
    WHERE
        ds >= (CURRENT_DATE - interval '1 day')::text
    GROUP BY
        repo_name
    ORDER BY
        events DESC
    LIMIT 5;

(可選)通過DataV搭建實時大屏

您可以通過DataV的數據大屏模板,基于Hologres數據源來快速搭建GitHub事件數據實時大屏。

  1. 創建Hologres數據源。

    將數據所在的Hologres實例和數據庫創建為DataV的數據源,詳情請參見DataV

  2. 創建可視化應用。

    1. 登錄DataV控制臺

    2. 工作臺頁面,單擊創建PC端看板

      選擇使用Hologres實時分析GitHub事件數據模板

    3. 修改模板中相關組件的數據源。

      以左上角的今日公開事件總數為例:

      1. 單擊今日公開事件總數對應的數字框,點擊右側數據源,選擇數據源類型實時數倉Hologresimage.png

      2. 選擇已有數據源為您已創建的數據源。

        如果您在Hologres中的表名和Schema與本實踐相同,則不需修改SQL。

      3. 修改完成后,數據響應結果刷新,大屏中成功展示實時數據。

      4. 按照示例更新大屏中的數據源和表名,需更新組件及更新后效果如下圖所示。

        image.png

    4. 單擊右上角發布,完成大屏搭建。

      您也可以單擊預覽,預覽實時更新的數據大屏。