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

專利申請和授權分析及展示

通過DataWorks Notebook利用SQL、Python和Markdown Cell對“中國大陸專利申請和授權數據集”進行數據開發、分析和展示,本文為您介紹具體的操作流程。

背景信息

本實踐將基于公開數據集“中國大陸專利申請和授權數據集”,在DataWorks Notebook中使用EMR Spark SQL、Hologres SQL、EMR StarRocks SQL、MaxCompute SQL、Python和Markdown Cell來完成數據開發、分析和展示。公開數據集“中國大陸專利申請和授權數據集”存儲在OSS中,包含了2003年至2021年間,中國大陸各省份的三大類專利申請和授權數據。基于該數據集,可以通過省份、年份來查詢和探索各地區的發明專利、實用新型專利和外觀設計專利的申請情況和授權數量。

前提條件

  • 已創建DLF 2.0數據目錄。如未創建,詳情請參見創建數據目錄

    說明

    如果是RAM用戶,在進行數據操作之前,需要先授予相應的資源權限。詳情請參見授權管理

  • 已創建Serverless StarRocks實例,實例版本需要不低于3.2。如未創建,詳情請參見創建實例

  • 已創建EMR Serverless Spark工作空間,引擎版本需要選擇esr-2.3 (Spark 3.4.2, Scala 2.12)。

  • 已創建Hologres實例,實例版本需要不低于3.0.7。

  • 已開通MaxCompute外部項目。

  • 已創建DataWorks工作空間,并綁定Serverless Spark工作空間、Serverless StarRocks實例、Hologres實例和MaxCompute外部項目的計算資源。

操作流程

前置步驟:載入Notebook案例

  1. 登錄DataWorks Gallery控制臺

  2. 找到對應的案例卡片(OpenLake解決方案快速入門),單擊卡片中的載入案例

  3. 選擇載入到的工作空間和實例,單擊確認,進入DataWorks數據開發頁面。

步驟1:環境準備

說明

設置DataLakeFormation(DLF)相關的全局參數,便于在后續運行代碼時直接引用。

  • 連接DLF服務所需的全局參數

    # 請在下方填寫全局參數1-4的值,再運行代碼
    
    # 1)請將 [dlf_region] 替換為您的DLF所在區域ID,例如cn-beijing
    dlf_region = "[dlf_region]"
    
    # 2)請將 [dlf_catalog_id] 替換為您DLF數據目錄ID;如果已進行OpenLake一體化開通,推薦填寫:"openlake_demo_dlf" 對應的DLF數據目錄ID
    dlf_catalog_id = "[dlf_catalog_id]"
    
    # 3)請將 [dlf_catalog_accessKeyId] 替換為您訪問DLF服務所需的AccessKeyId
    dlf_catalog_accessKeyId = "[dlf_catalog_accessKeyId]"
    
    # 4)請將 [dlf_catalog_accessKeySecret] 替換為您訪問DLF服務所需的AccessKeySecret
    dlf_catalog_accessKeySecret = "[dlf_catalog_accessKeySecret]" 
    
    # DLF服務的VPC網絡Endpoint 和 Hologres訪問DLF的Endpoint,格式已適配,以下配置無需修改
    dlf_endpoint = f"dlfnext-vpc.{dlf_region}.aliyuncs.com"
    dlf_endpoint_for_holo = f"dlfnext-share.{dlf_region}.aliyuncs.com"

    配置項

    描述

    dlf_region

    DLF所在區域ID,例如cn-hangzhou、cn-beijing等,詳情請參見地域及訪問域名

    dlf_catalog_id

    DLF數據目錄ID,請在數據湖構建控制臺上查看數據目錄對應的ID,詳情請參見數據目錄

    dlf_catalog_accessKeyId

    訪問DLF服務所需的Access Key ID,獲取方法請參見查看RAM用戶的AccessKey信息

    dlf_catalog_accessKeySecret

    訪問DLF服務所需的Access Key Secret,獲取方法請參見查看RAM用戶的AccessKey信息

  • 使用DLF數據目錄、數據庫和數據表所需的全局參數

    # 請在下方填寫全局參數1-4的值,再運行代碼設置DataLakeFormation(DLF)相關的全局參數,便于在后續運行代碼時直接引用。
    # 1)請將[dlf_catalog_name]替換為您的目標DLF Catalog名稱。如果已進行OpenLake一體化開通,推薦填寫:"MyFirstCatalog"。
    dlf_catalog_name = "[dlf_catalog_name]" 
    
    # 2)請將[dlf_database_name]替換為您的目標DLF數據庫名稱。如果已進行OpenLake一體化開通,推薦填寫:"default"。
    dlf_database_name = "[dlf_database_name]" 
    
    # 3)請將[dlf_table_name]替換成自定義表名稱,推薦填寫:"mainland_domestic_patents_application"
    dlf_table_name = "[dlf_table_name]" 
    
    # 4)請將[dlf_catalog_name_for_mc]替換為MC外部項目名稱。如果已進行OpenLake一體化開通,推薦填寫:"openlake_demo_mc_expj_隨機字符"
    dlf_catalog_name_for_mc = "[dlf_catalog_name_for_mc]"

    配置項

    描述

    dlf_catalog_name

    DLF數據目錄名稱,請在數據湖構建控制臺上查看數據目錄名稱,詳情請參見數據目錄

    dlf_database_name

    DLF數據庫名稱,請在數據湖構建控制臺上查看數據目錄下的數據庫名稱,詳情請參見數據庫

    dlf_table_name

    自定義表名稱。

    dlf_catalog_name_for_mc

    MaxCompute外部項目名稱,具體信息請參見MaxCompute控制臺

步驟2:數據準備

從OSS公開存儲地址中獲取原始數據,并存入Python Pandas DataFrame中(DataFrame對象的變量名稱:df_data)。

  1. 讀取OSS原始數據。

    import pandas as pd
    df_data = pd.read_csv('https://dataworks-dataset-cn-shanghai.oss-cn-shanghai.aliyuncs.com/public-datasets/L1_update/L2_mainland_domestic_patents_application/full_title_03_21_mainland_domestic_patents_application.txt', sep=',', header=0)
    
    df_data
  2. 創建Paimon格式的數據表。

    import os
    import pandas as pd
    import pyarrow as pa
    
    from paimon_python_java import Catalog
    from paimon_python_api import Schema
    
    # 連接DLF Catalog
    catalog_options = {
        'metastore': 'dlf-paimon',
        'dlf.endpoint': dlf_endpoint,
        'dlf.region': dlf_region ,
        'dlf.catalog.id': dlf_catalog_id,
        'dlf.catalog.accessKeyId': dlf_catalog_accessKeyId ,
        'dlf.catalog.accessKeySecret': dlf_catalog_accessKeySecret,
    }
    catalog = Catalog.create(catalog_options)
    
    # 新建Paimon表
    record_batch = pa.RecordBatch.from_pandas(df_data)
    schema = Schema(record_batch.schema)
    
    catalog.create_table(f'{dlf_database_name}.{dlf_table_name}', schema, True)
  3. 數據寫入Paimon表。

    將之前步驟中獲取的Python Pandas DataFrame對象(df_data)的數據寫入Paimon表(表名為步驟1中定義的dlf_table_name參數取值)。

    # 將數據寫入表
    table = catalog.get_table(f'{dlf_database_name}.{dlf_table_name}')
    write_builder = table.new_batch_write_builder()
    table_write = write_builder.new_write()
    table_commit = write_builder.new_commit()
    
    record_batch = pa.RecordBatch.from_pandas(df_data)
    table_write.write_arrow_batch(record_batch)
    commit_messages = table_write.prepare_commit()
    table_commit.commit(commit_messages)
    
    table_write.close()
    table_commit.close()
    print("成功寫入數據到Paimon表!")

步驟3:交互式分析

  1. 使用Python構建ipywidgets交互組件。

    import ipywidgets as widgets
    from IPython.display import display
    
    # 中國的所有省份、自治區和直轄市
    provinces = [
        '北京市', '天津市', '上海市', '重慶市',
        '河北省', '山西省', '遼寧省', '吉林省', '黑龍江省', '江蘇省', '浙江省', '安徽省', '福建省', '江西省', '山東省',
        '河南省', '湖北省', '湖南省', '廣東省', '廣西壯族自治區', '海南省', '四川省', '貴州省', '云南省', '西藏自治區',
        '陜西省', '甘肅省', '青海省', '寧夏回族自治區', '新疆維吾爾自治區'
    ]
    
    # 創建復選框組件
    checkboxes = [widgets.Checkbox(description=province) for province in provinces]
    
    # 將復選框按5列排列
    checkbox_grid = widgets.GridBox(checkboxes, layout=widgets.Layout(grid_template_columns="repeat(5, 200px)"))
    
    print("選擇要查詢的省市地區:")
    # 顯示復選框組件
    display(checkbox_grid)
    
    # 定義處理復選框變化的函數
    def handle_checkbox_change(change):
        global query_province
        selected_provinces = [checkbox.description for checkbox in checkboxes if checkbox.value]
        query_province = "'" + "','".join(selected_provinces) + "'"
    
    # 綁定復選框變化事件
    for checkbox in checkboxes:
        checkbox.observe(handle_checkbox_change, names='value')
  2. 使用SQL查詢2021年不同省市地區的專利獲批率。

    • EMR Spark SQL

      Cell類型選擇EMR SPARK SQL,并選擇已綁定的Serverless Spark計算資源,請注意Spark工作空間中的數據目錄是否已經添加了步驟1中"dlf_catalog_name"變量對應的DLF數據目錄。

      SELECT ROUND(designs_patents_granted/patents_application_granted*100,2)  AS designs_patents_granted_rate,    -- 專利申請獲得授權的百分比
             region,    -- 地區
             year       -- 年份,枚舉值從2003至2021
      FROM ${dlf_catalog_name}.${dlf_database_name}.${dlf_table_name}
      WHERE year = '2021'
      AND region IN ('北京市', '山西省', '浙江省', '河南省', '海南省', '陜西省')
      ;
    • Hologres SQL

      Cell類型選擇Hologres SQL,并選擇已綁定的Hologres計算資源。

      SELECT (designs_patents_granted::float4/patents_application_granted *100)::decimal(19,2)  AS designs_patents_granted_rate,    -- 專利申請獲得授權的百分比
             region,    -- 地區
             year       -- 年份,枚舉值從2003至2021
      FROM ${dlf_catalog_name}.${dlf_database_name}.${dlf_table_name}
      WHERE year = '2021'
      AND region IN ('北京市', '山西省', '浙江省', '河南省', '海南省', '陜西省')
      ;
    • EMR StarRocks SQL

      Cell類型選擇StarRocks,并選擇已綁定的StarRocks計算資源。

      -- 請先在EMR StarRocks中創建StarRocks External Catalog,映射至DLF Catalog
      DROP CATALOG `${dlf_catalog_name}`;
      CREATE EXTERNAL CATALOG `${dlf_catalog_name}`
      PROPERTIES (
      "type"  =  "paimon",
      "paimon.catalog.type"  =  "dlf-paimon",
      "dlf.catalog.instance.id"  = "${dlf_catalog_id}"
      );
      SELECT ROUND(designs_patents_granted/patents_application_granted*100,2)  AS designs_patents_granted_rate,    -- 專利申請獲得授權的百分比
             region,    -- 地區
             year       -- 年份,枚舉值從2003至2021
      FROM `${dlf_catalog_name}`.`${dlf_database_name}`.${dlf_table_name}
      WHERE year = '2021'
      AND region IN ('北京市', '山西省', '浙江省', '河南省', '海南省', '陜西省')
      ;
    • MaxCompute SQL

      Cell類型選擇MaxCompute SQL,并選擇已綁定的MaxCompute計算資源,請注意所選MaxCompute外部項目關聯的DLF數據目錄是否是步驟1中"dlf_catalog_name_for_mc"變量對應的DLF數據目錄。

      set odps.namespace.schema=true;
      set odps.sql.allow.namespace.schema=true;
      
      SELECT ROUND(designs_patents_granted/patents_application_granted*100,2)  AS designs_patents_granted_rate,    -- 專利申請獲得授權的百分比
             region,    -- 地區
             year       -- 年份,枚舉值從2003至2021
      FROM `${mc_external_prj}`.`${dlf_database_name}`.${dlf_table_name}
      WHERE year = '2021'
      AND region IN ('北京市', '山西省', '浙江省', '河南省', '海南省', '陜西省')
      ;

步驟4:可視化圖表

步驟3中的數據查詢結果均已經存儲至Python Pandas DataFrame對象中,分別是:

  • EMR Spark SQL查詢結果:df_spark

  • Hologres SQL查詢結果:df_hologres

  • StarRocks SQL查詢結果:df_starrocks

  • MaxCompute SQL查詢結果:df_maxcompute

執行以下Python腳本,可視化展示不同省份的外形設計專利占比柱狀圖。

import pandas as pd
import matplotlib.pyplot as plt
import math

#省份及地區名稱
province = list(df_spark['region'])   # df_spark 支持替換為:df_spark 或 df_hologres 或 df_starrocks 或 df_maxcompute
province = [prov for prov in province]

#外形設計專利的占比
rate = list(df_spark['designs_patents_granted_rate'])   # df_spark 支持替換為:df_spark 或 df_hologres 或 df_starrocks 或 df_maxcompute
rate = [math.floor(float(tmp_rate)) for tmp_rate in rate]

plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = 'Source Han Serif SC'

#繪制柱狀圖
plt.bar(province, rate)
plt.ylim(0, 30)
plt.yticks(range(0, 30, 5))
plt.xlabel('province')
plt.xticks(rotation=45, ha="right")
plt.ylabel('designs_patents_granted_rate')
plt.title('designs_patents_granted_rate')
plt.show()