产品
解决方案
客户案例
资源中心
活动中心
关于我们
在云器Lakehouse上玩Kaggle数据之US Funds dataset from Yahoo Finance(一)
数据见闻
2024年8月21日
本文讨论了在云器 Lakehouse 上处理 Kaggle 数据集中的 US Funds dataset from Yahoo Finance 的过程

Kaggle 是一个数据建模和数据分析竞赛平台。企业和研究者可在其上发布数据,统计学者和数据挖掘专家可在其上进行竞赛以产生最好的模型。这一众包模式依赖于这一事实,即有众多策略可以用于解决几乎所有预测建模的问题,而研究者不可能在一开始就了解什么方法对于特定问题是最为有效的。Kaggle的目标则是试图通过众包的形式来解决这一难题,进而使数据科学成为一场运动。

US Funds dataset from Yahoo Finance是Kaggle上的一个数据集,该数据集包括从 Yahoo Finance 收集的财务信息,包括所有美国共同基金、ETF及其历史价格。更新版本涉及 2021 年 11 月的数据。该数据集包含 23,783 只共同基金和 2,310 只 ETF,其中包括:

  • 一般基金方面(例如总净资产、基金家族、成立日期等)
  • 投资组合指标(如现金、股票、债券、行业等)
  • 历史年度和季度回报(例如年初至今、1 年、3 年等)
  • 财务比率(市盈率、特雷诺比率和夏普比率、阿尔法比率和贝塔比率)
  • ESG 分数

数据集下载地址:US Funds dataset from Yahoo Finance

数据集概要介绍如下:7个文件,460个字段。

image.png

任务一:如何快速生成这些文件对应的表结构需要的DDL语句-LLM or 手写 or Python?

不同于玩玩具的玩数据,只是一个简单的表,10来个字段,手写一把,问问大模型,都可以很快的生成需要的DDL语句。话说有460个字段,近亿行数据,手写是不行的。试试Kimi吧,看看Kimi能不能帮上这个忙。

image.png

Kimi给的这个首先是假设,都没有去访问网页内容,Kimi也是变懒了。大模型不像刚出来那样爱干活了,这完全没法用啊!再试试Azure Copilot、智谱CodeGeeX,都是这样,对于这种依赖外部信息、几百个字段的表都没法生成需要的SQL DDL语句。

✅ 换个思路:从Kaggle下载文件放在当前目录的data/USFundsdatasetfromYahooFinance下。让Azure Copilot写个Python程序,生成CSV文件对应的SQL DDL。

import os
import pandas as pd

for dirname, _, filenames in os.walk('./data/USFundsdatasetfromYahooFinance'):
    for filename in filenames:
        if filename.startswith('.'):
            continue  # 跳过隐藏文件
        if filename.endswith('.csv'):  # 只处理CSV文件
            file_path = os.path.join(dirname, filename)
            df = pd.read_csv(file_path)  # 加载CSV文件内容
            schema = df.dtypes.to_dict()  # 获取数据类型
            table_name = os.path.splitext(filename)[0]
            # 去掉空格并将空格后的第一个字符变成大写
            table_name = ''.join(word.capitalize() for word in table_name.split())
            ddl = f"CREATE TABLE {table_name} (\n"
            for column, dtype in schema.items():
                if 'int' in str(dtype):
                    ddl += f"  {column} BIGINT,\n"
                elif 'float' in str(dtype):
                    ddl += f"  {column} DOUBLE,\n"
                elif 'date' in str(dtype):
                    ddl += f"  {column} DATE,\n"
                else:
                    ddl += f"  {column} STRING,\n"
            ddl = ddl.rstrip(',\n') + "\n);"  # 去掉最后一个逗号并添加括号
            print(f'CSV文件路径: {file_path}')
            print(f'SQL DDL语句:\n{ddl}')
            print('---')

看下结果:

CSV文件路径: ./data/USFundsdatasetfromYahooFinance/ETF prices.csv
SQL DDL语句:
CREATE TABLE EtfPrices (
  fund_symbol STRING,
  price_date STRING,
  open DOUBLE,
  high DOUBLE,
  low DOUBLE,
  close DOUBLE,
  adj_close DOUBLE,
  volume BIGINT
);
---
CSV文件路径: ./data/USFundsdatasetfromYahooFinance/MutualFund prices - L-P.csv
SQL DDL语句:
CREATE TABLE MutualfundPrices-L-p (
  fund_symbol STRING,
  price_date STRING,
  nav_per_share DOUBLE
);
---
CSV文件路径: ./data/USFundsdatasetfromYahooFinance/MutualFund prices - Q-Z.csv
SQL DDL语句:
CREATE TABLE MutualfundPrices-Q-z (
  fund_symbol STRING,
  price_date STRING,
  nav_per_share DOUBLE
);
---
CSV文件路径: ./data/USFundsdatasetfromYahooFinance/MutualFunds.csv
SQL DDL语句:
CREATE TABLE Mutualfunds (
  fund_symbol STRING,
  quote_type STRING,
  region STRING,
  fund_short_name STRING,
  fund_long_name STRING,
  currency STRING,
  initial_investment DOUBLE,
  subsequent_investment DOUBLE,
  fund_category STRING,
  fund_family STRING,
  exchange_code STRING,
  exchange_name STRING,
  exchange_timezone STRING,
  management_name STRING,
  management_bio STRING,
  management_start_date STRING,
  total_net_assets DOUBLE,
  year_to_date_return DOUBLE,
  day50_moving_average DOUBLE,
  day200_moving_average DOUBLE,
  week52_high_low_change DOUBLE,
  week52_high_low_change_perc DOUBLE,
  week52_high DOUBLE,
  week52_high_change DOUBLE,
  week52_high_change_perc DOUBLE,
  week52_low DOUBLE,
  week52_low_change DOUBLE,
  week52_low_change_perc DOUBLE,
  investment_strategy STRING,
  fund_yield DOUBLE,
  morningstar_overall_rating DOUBLE,
  morningstar_risk_rating DOUBLE,
  inception_date STRING,
  last_dividend DOUBLE,
  last_cap_gain DOUBLE,
  annual_holdings_turnover DOUBLE,
  investment_type STRING,
  size_type STRING,
  fund_annual_report_net_expense_ratio DOUBLE,
  category_annual_report_net_expense_ratio DOUBLE,
  fund_prospectus_net_expense_ratio DOUBLE,
  fund_prospectus_gross_expense_ratio DOUBLE,
  fund_max_12b1_fee DOUBLE,
  fund_max_front_end_sales_load DOUBLE,
  category_max_front_end_sales_load DOUBLE,
  fund_max_deferred_sales_load DOUBLE,
  category_max_deferred_sales_load DOUBLE,
  fund_year3_expense_projection DOUBLE,
  fund_year5_expense_projection DOUBLE,
  fund_year10_expense_projection DOUBLE,
  asset_cash DOUBLE,
  asset_stocks DOUBLE,
  asset_bonds DOUBLE,
  asset_others DOUBLE,
  asset_preferred DOUBLE,
  asset_convertible DOUBLE,
  fund_sector_basic_materials DOUBLE,
  fund_sector_communication_services DOUBLE,
  fund_sector_consumer_cyclical DOUBLE,
  fund_sector_consumer_defensive DOUBLE,
  fund_sector_energy DOUBLE,
  fund_sector_financial_services DOUBLE,
  fund_sector_healthcare DOUBLE,
  fund_sector_industrials DOUBLE,
  fund_sector_real_estate DOUBLE,
  fund_sector_technology DOUBLE,
  fund_sector_utilities DOUBLE,
  fund_price_book_ratio DOUBLE,
  category_price_book_ratio DOUBLE,
  fund_price_cashflow_ratio DOUBLE,
  category_price_cashflow_ratio DOUBLE,
  fund_price_earning_ratio DOUBLE,
  category_price_earning_ratio DOUBLE,
  fund_price_sales_ratio DOUBLE,
  category_price_sales_ratio DOUBLE,
  fund_median_market_cap DOUBLE,
  category_median_market_cap DOUBLE,
  fund_year3_earnings_growth DOUBLE,
  category_year3_earnings_growth DOUBLE,
  fund_bond_maturity DOUBLE,
  category_bond_maturity DOUBLE,
  fund_bond_duration DOUBLE,
  category_bond_duration DOUBLE,
  fund_bonds_us_government DOUBLE,
  fund_bonds_aaa DOUBLE,
  fund_bonds_aa DOUBLE,
  fund_bonds_a DOUBLE,
  fund_bonds_bbb DOUBLE,
  fund_bonds_bb DOUBLE,
  fund_bonds_b DOUBLE,
  fund_bonds_below_b DOUBLE,
  fund_bonds_others DOUBLE,
  top10_holdings STRING,
  top10_holdings_total_assets DOUBLE,
  morningstar_return_rating DOUBLE,
  returns_as_of_date STRING,
  fund_return_ytd DOUBLE,
  category_return_ytd DOUBLE,
  fund_return_1month DOUBLE,
  category_return_1month DOUBLE,
  fund_return_3months DOUBLE,
  category_return_3months DOUBLE,
  fund_return_1year DOUBLE,
  category_return_1year DOUBLE,
  fund_return_3years DOUBLE,
  category_return_3years DOUBLE,
  fund_return_5years DOUBLE,
  category_return_5years DOUBLE,
  fund_return_10years DOUBLE,
  category_return_10years DOUBLE,
  fund_return_last_bull_market DOUBLE,
  category_return_last_bull_market DOUBLE,
  fund_return_last_bear_market DOUBLE,
  category_return_last_bear_market DOUBLE,
  years_up DOUBLE,
  years_down DOUBLE,
  fund_return_2020 DOUBLE,
  category_return_2020 DOUBLE,
  fund_return_2019 DOUBLE,
  category_return_2019 DOUBLE,
  fund_return_2018 DOUBLE,
  category_return_2018 DOUBLE,
  fund_return_2017 DOUBLE,
  category_return_2017 DOUBLE,
  fund_return_2016 DOUBLE,
  category_return_2016 DOUBLE,
  fund_return_2015 DOUBLE,
  category_return_2015 DOUBLE,
  fund_return_2014 DOUBLE,
  category_return_2014 DOUBLE,
  fund_return_2013 DOUBLE,
  category_return_2013 DOUBLE,
  fund_return_2012 DOUBLE,
  category_return_2012 DOUBLE,
  fund_return_2011 DOUBLE,
  category_return_2011 DOUBLE,
  fund_return_2010 DOUBLE,
  category_return_2010 DOUBLE,
  fund_return_2009 DOUBLE,
  category_return_2009 DOUBLE,
  fund_return_2008 DOUBLE,
  category_return_2008 DOUBLE,
  fund_return_2007 DOUBLE,
  category_return_2007 DOUBLE,
  fund_return_2006 DOUBLE,
  category_return_2006 DOUBLE,
  fund_return_2005 DOUBLE,
  category_return_2005 DOUBLE,
  fund_return_2004 DOUBLE,
  category_return_2004 DOUBLE,
  fund_return_2003 DOUBLE,
  category_return_2003 DOUBLE,
  fund_return_2002 DOUBLE,
  category_return_2002 DOUBLE,
  fund_return_2001 DOUBLE,
  category_return_2001 DOUBLE,
  fund_return_2000 DOUBLE,
  category_return_2000 DOUBLE,
  quarters_up DOUBLE,
  quarters_down DOUBLE,
  fund_return_2021_q3 DOUBLE,
  fund_return_2021_q2 DOUBLE,
  fund_return_2021_q1 DOUBLE,
  fund_return_2020_q4 DOUBLE,
  fund_return_2020_q3 DOUBLE,
  fund_return_2020_q2 DOUBLE,
  fund_return_2020_q1 DOUBLE,
  fund_return_2019_q4 DOUBLE,
  fund_return_2019_q3 DOUBLE,
  fund_return_2019_q2 DOUBLE,
  fund_return_2019_q1 DOUBLE,
  fund_return_2018_q4 DOUBLE,
  fund_return_2018_q3 DOUBLE,
  fund_return_2018_q2 DOUBLE,
  fund_return_2018_q1 DOUBLE,
  fund_return_2017_q4 DOUBLE,
  fund_return_2017_q3 DOUBLE,
  fund_return_2017_q2 DOUBLE,
  fund_return_2017_q1 DOUBLE,
  fund_return_2016_q4 DOUBLE,
  fund_return_2016_q3 DOUBLE,
  fund_return_2016_q2 DOUBLE,
  fund_return_2016_q1 DOUBLE,
  fund_return_2015_q4 DOUBLE,
  fund_return_2015_q3 DOUBLE,
  fund_return_2015_q2 DOUBLE,
  fund_return_2015_q1 DOUBLE,
  fund_return_2014_q4 DOUBLE,
  fund_return_2014_q3 DOUBLE,
  fund_return_2014_q2 DOUBLE,
  fund_return_2014_q1 DOUBLE,
  fund_return_2013_q4 DOUBLE,
  fund_return_2013_q3 DOUBLE,
  fund_return_2013_q2 DOUBLE,
  fund_return_2013_q1 DOUBLE,
  fund_return_2012_q4 DOUBLE,
  fund_return_2012_q3 DOUBLE,
  fund_return_2012_q2 DOUBLE,
  fund_return_2012_q1 DOUBLE,
  fund_return_2011_q4 DOUBLE,
  fund_return_2011_q3 DOUBLE,
  fund_return_2011_q2 DOUBLE,
  fund_return_2011_q1 DOUBLE,
  fund_return_2010_q4 DOUBLE,
  fund_return_2010_q3 DOUBLE,
  fund_return_2010_q2 DOUBLE,
  fund_return_2010_q1 DOUBLE,
  fund_return_2009_q4 DOUBLE,
  fund_return_2009_q3 DOUBLE,
  fund_return_2009_q2 DOUBLE,
  fund_return_2009_q1 DOUBLE,
  fund_return_2008_q4 DOUBLE,
  fund_return_2008_q3 DOUBLE,
  fund_return_2008_q2 DOUBLE,
  fund_return_2008_q1 DOUBLE,
  fund_return_2007_q4 DOUBLE,
  fund_return_2007_q3 DOUBLE,
  fund_return_2007_q2 DOUBLE,
  fund_return_2007_q1 DOUBLE,
  fund_return_2006_q4 DOUBLE,
  fund_return_2006_q3 DOUBLE,
  fund_return_2006_q2 DOUBLE,
  fund_return_2006_q1 DOUBLE,
  fund_return_2005_q4 DOUBLE,
  fund_return_2005_q3 DOUBLE,
  fund_return_2005_q2 DOUBLE,
  fund_return_2005_q1 DOUBLE,
  fund_return_2004_q4 DOUBLE,
  fund_return_2004_q3 DOUBLE,
  fund_return_2004_q2 DOUBLE,
  fund_return_2004_q1 DOUBLE,
  fund_return_2003_q4 DOUBLE,
  fund_return_2003_q3 DOUBLE,
  fund_return_2003_q2 DOUBLE,
  fund_return_2003_q1 DOUBLE,
  fund_return_2002_q4 DOUBLE,
  fund_return_2002_q3 DOUBLE,
  fund_return_2002_q2 DOUBLE,
  fund_return_2002_q1 DOUBLE,
  fund_return_2001_q4 DOUBLE,
  fund_return_2001_q3 DOUBLE,
  fund_return_2001_q2 DOUBLE,
  fund_return_2001_q1 DOUBLE,
  fund_return_2000_q4 DOUBLE,
  fund_return_2000_q3 DOUBLE,
  fund_return_2000_q2 DOUBLE,
  fund_return_2000_q1 DOUBLE,
  fund_alpha_3years DOUBLE,
  fund_beta_3years DOUBLE,
  fund_mean_annual_return_3years DOUBLE,
  fund_r_squared_3years DOUBLE,
  fund_stdev_3years DOUBLE,
  fund_sharpe_ratio_3years DOUBLE,
  fund_treynor_ratio_3years DOUBLE,
  fund_alpha_5years DOUBLE,
  fund_beta_5years DOUBLE,
  fund_mean_annual_return_5years DOUBLE,
  fund_r_squared_5years DOUBLE,
  fund_stdev_5years DOUBLE,
  fund_sharpe_ratio_5years DOUBLE,
  fund_treynor_ratio_5years DOUBLE,
  fund_alpha_10years DOUBLE,
  fund_beta_10years DOUBLE,
  fund_mean_annual_return_10years DOUBLE,
  fund_r_squared_10years DOUBLE,
  fund_stdev_10years DOUBLE,
  fund_sharpe_ratio_10years DOUBLE,
  fund_treynor_ratio_10years DOUBLE,
  fund_return_category_rank_ytd DOUBLE,
  fund_return_category_rank_1month DOUBLE,
  fund_return_category_rank_3months DOUBLE,
  fund_return_category_rank_1year DOUBLE,
  fund_return_category_rank_3years DOUBLE,
  fund_return_category_rank_5years DOUBLE,
  load_adj_return_1year DOUBLE,
  load_adj_return_3years DOUBLE,
  load_adj_return_5years DOUBLE,
  load_adj_return_10years DOUBLE,
  sustainability_score DOUBLE,
  sustainability_rank DOUBLE,
  esg_peer_group STRING,
  esg_peer_count DOUBLE,
  esg_score DOUBLE,
  peer_esg_min DOUBLE,
  peer_esg_avg DOUBLE,
  peer_esg_max DOUBLE,
  environment_score DOUBLE,
  peer_environment_min DOUBLE,
  peer_environment_avg DOUBLE,
  peer_environment_max DOUBLE,
  social_score DOUBLE,
  peer_social_min DOUBLE,
  peer_social_avg DOUBLE,
  peer_social_max DOUBLE,
  governance_score DOUBLE,
  peer_governance_min DOUBLE,
  peer_governance_avg DOUBLE,
  peer_governance_max DOUBLE
);
---
CSV文件路径: ./data/USFundsdatasetfromYahooFinance/ETFs.csv
SQL DDL语句:
CREATE TABLE Etfs (
  fund_symbol STRING,
  quote_type STRING,
  region STRING,
  fund_short_name STRING,
  fund_long_name STRING,
  currency STRING,
  fund_category STRING,
  fund_family STRING,
  exchange_code STRING,
  exchange_name STRING,
  exchange_timezone STRING,
  avg_vol_3month BIGINT,
  avg_vol_10day DOUBLE,
  total_net_assets DOUBLE,
  day50_moving_average DOUBLE,
  day200_moving_average DOUBLE,
  week52_high_low_change DOUBLE,
  week52_high_low_change_perc DOUBLE,
  week52_high DOUBLE,
  week52_high_change DOUBLE,
  week52_high_change_perc DOUBLE,
  week52_low DOUBLE,
  week52_low_change DOUBLE,
  week52_low_change_perc DOUBLE,
  investment_strategy STRING,
  fund_yield DOUBLE,
  inception_date STRING,
  annual_holdings_turnover DOUBLE,
  investment_type STRING,
  size_type STRING,
  fund_annual_report_net_expense_ratio DOUBLE,
  category_annual_report_net_expense_ratio DOUBLE,
  asset_stocks DOUBLE,
  asset_bonds DOUBLE,
  fund_sector_basic_materials DOUBLE,
  fund_sector_communication_services DOUBLE,
  fund_sector_consumer_cyclical DOUBLE,
  fund_sector_consumer_defensive DOUBLE,
  fund_sector_energy DOUBLE,
  fund_sector_financial_services DOUBLE,
  fund_sector_healthcare DOUBLE,
  fund_sector_industrials DOUBLE,
  fund_sector_real_estate DOUBLE,
  fund_sector_technology DOUBLE,
  fund_sector_utilities DOUBLE,
  fund_price_book_ratio DOUBLE,
  fund_price_cashflow_ratio DOUBLE,
  fund_price_earning_ratio DOUBLE,
  fund_price_sales_ratio DOUBLE,
  fund_bond_maturity DOUBLE,
  fund_bond_duration DOUBLE,
  fund_bonds_us_government DOUBLE,
  fund_bonds_aaa DOUBLE,
  fund_bonds_aa DOUBLE,
  fund_bonds_a DOUBLE,
  fund_bonds_bbb DOUBLE,
  fund_bonds_bb DOUBLE,
  fund_bonds_b DOUBLE,
  fund_bonds_below_b DOUBLE,
  fund_bonds_others DOUBLE,
  top10_holdings STRING,
  top10_holdings_total_assets DOUBLE,
  returns_as_of_date STRING,
  fund_return_ytd DOUBLE,
  category_return_ytd DOUBLE,
  fund_return_1month DOUBLE,
  category_return_1month DOUBLE,
  fund_return_3months DOUBLE,
  category_return_3months DOUBLE,
  fund_return_1year DOUBLE,
  category_return_1year DOUBLE,
  fund_return_3years DOUBLE,
  category_return_3years DOUBLE,
  fund_return_5years DOUBLE,
  category_return_5years DOUBLE,
  fund_return_10years DOUBLE,
  category_return_10years DOUBLE,
  years_up DOUBLE,
  years_down DOUBLE,
  fund_return_2020 DOUBLE,
  category_return_2020 DOUBLE,
  fund_return_2019 DOUBLE,
  category_return_2019 DOUBLE,
  fund_return_2018 DOUBLE,
  category_return_2018 DOUBLE,
  fund_return_2017 DOUBLE,
  category_return_2017 DOUBLE,
  fund_return_2016 DOUBLE,
  category_return_2016 DOUBLE,
  fund_return_2015 DOUBLE,
  category_return_2015 DOUBLE,
  fund_return_2014 DOUBLE,
  category_return_2014 DOUBLE,
  fund_return_2013 DOUBLE,
  category_return_2013 DOUBLE,
  fund_return_2012 DOUBLE,
  category_return_2012 DOUBLE,
  fund_return_2011 DOUBLE,
  category_return_2011 DOUBLE,
  fund_return_2010 DOUBLE,
  category_return_2010 DOUBLE,
  fund_return_2009 DOUBLE,
  category_return_2009 DOUBLE,
  fund_return_2008 DOUBLE,
  category_return_2008 DOUBLE,
  fund_return_2007 DOUBLE,
  category_return_2007 DOUBLE,
  fund_return_2006 DOUBLE,
  category_return_2006 DOUBLE,
  fund_return_2005 DOUBLE,
  category_return_2005 DOUBLE,
  fund_return_2004 DOUBLE,
  category_return_2004 DOUBLE,
  fund_return_2003 DOUBLE,
  category_return_2003 DOUBLE,
  fund_return_2002 DOUBLE,
  category_return_2002 DOUBLE,
  fund_return_2001 DOUBLE,
  category_return_2001 DOUBLE,
  fund_return_2000 DOUBLE,
  category_return_2000 DOUBLE,
  fund_alpha_3years DOUBLE,
  fund_beta_3years DOUBLE,
  fund_mean_annual_return_3years DOUBLE,
  fund_r_squared_3years DOUBLE,
  fund_stdev_3years DOUBLE,
  fund_sharpe_ratio_3years DOUBLE,
  fund_treynor_ratio_3years DOUBLE,
  fund_alpha_5years DOUBLE,
  fund_beta_5years DOUBLE,
  fund_mean_annual_return_5years DOUBLE,
  fund_r_squared_5years DOUBLE,
  fund_stdev_5years DOUBLE,
  fund_sharpe_ratio_5years DOUBLE,
  fund_treynor_ratio_5years DOUBLE,
  fund_alpha_10years DOUBLE,
  fund_beta_10years DOUBLE,
  fund_mean_annual_return_10years DOUBLE,
  fund_r_squared_10years DOUBLE,
  fund_stdev_10years DOUBLE,
  fund_sharpe_ratio_10years DOUBLE,
  fund_treynor_ratio_10years DOUBLE
);
---
CSV文件路径: ./data/USFundsdatasetfromYahooFinance/MutualFund prices - A-E.csv
SQL DDL语句:
CREATE TABLE MutualfundPrices-A-e (
  fund_symbol STRING,
  price_date STRING,
  nav_per_share DOUBLE
);
---
CSV文件路径: ./data/USFundsdatasetfromYahooFinance/MutualFund prices - F-K.csv
SQL DDL语句:
CREATE TABLE MutualfundPrices-F-k (
  fund_symbol STRING,
  price_date STRING,
  nav_per_share DOUBLE
);
---
CSV文件路径: ./data/USFundsdatasetfromYahooFinance/.ipynb_checkpoints/MutualFund prices - Q-Z-checkpoint.csv
SQL DDL语句:
CREATE TABLE MutualfundPrices-Q-z-checkpoint (
  fund_symbol STRING,
  price_date STRING,
  nav_per_share DOUBLE
);
---
CSV文件路径: ./data/USFundsdatasetfromYahooFinance/.ipynb_checkpoints/ETF prices-checkpoint.csv
SQL DDL语句:
CREATE TABLE EtfPrices-checkpoint (
  fund_symbol STRING,
  price_date STRING,
  open DOUBLE,
  high DOUBLE,
  low DOUBLE,
  close DOUBLE,
  adj_close DOUBLE,
  volume BIGINT
);
---

相比手写,一个是快速,一个是准确。基本的用来建表的DDL语句这就有了。 检查一下,把几个日期字段的数据类型改为Date,把表的名字规范一下,就形成了云器Lakehouse兼容的建表DDL语句了。

任务二:在云器Lakehouse里建模,存放数据

在数据处理过程中,我们首先对 ETFsETFPricesMutualFundsMutualFundPrices 这四张表的列进行了重命名和添加注释的操作,以便更好地理解和管理数据。 对于 ETFs 表,我们涵盖了基金代码、报价类型、地区、基金简称、基金全称、货币、基金类别、基金家族、交易所代码、交易所名称、交易所时区、平均成交量、总净资产等众多关键信息。 对于 ETFPrices 表,主要记录了基金代码、价格日期、开盘价、最高价、最低价、收盘价、调整后收盘价和成交量等价格相关数据。 对于 MutualFunds 表,包含了基金代码、报价类型、地区、基金简称、基金全称、货币、初始投资、后续投资、基金类别、基金家族、交易所代码、交易所名称、交易所时区、管理人姓名等详细信息。 对于 MutualFundPrices 表,重点记录了基金代码、价格日期和每股净值。

云器Lakehouse内置了SQL IDE开发界面,将Python生成的SQL DDL语句COPY进IDE执行即可,在执行之前,先创建一个schema,并且指定使用该schema:

CREATE SCHEMA IF not exists usfundsdatasetfromyahoofinance;
USE SCHEMA usfundsdatasetfromyahoofinance;

image.png

完整的DDL如下:

-- DROP TABLE IF exists ETFPrices;
-- DROP TABLE IF exists ETFs;
-- DROP TABLE IF exists MutualFundPrices;
-- DROP TABLE IF exists MutualFunds;
CREATE TABLE IF not exists ETFs (
    fund_symbol STRING,
    quote_type STRING,
    region STRING,
    fund_short_name STRING,
    fund_long_name STRING,
    currency STRING,
    fund_category STRING,
    fund_family STRING,
    exchange_code STRING,
    exchange_name STRING,
    exchange_timezone STRING,
    avg_vol_3month BIGINT,
    avg_vol_10day DOUBLE,
    total_net_assets DOUBLE,
    day50_moving_average DOUBLE,
    day200_moving_average DOUBLE,
    week52_high_low_change DOUBLE,
    week52_high_low_change_perc DOUBLE,
    week52_high DOUBLE,
    week52_high_change DOUBLE,
    week52_high_change_perc DOUBLE,
    week52_low DOUBLE,
    week52_low_change DOUBLE,
    week52_low_change_perc DOUBLE,
    investment_strategy STRING,
    fund_yield DOUBLE,
    inception_date STRING,
    annual_holdings_turnover DOUBLE,
    investment_type STRING,
    size_type STRING,
    fund_annual_report_net_expense_ratio DOUBLE,
    category_annual_report_net_expense_ratio DOUBLE,
    asset_stocks DOUBLE,
    asset_bonds DOUBLE,
    fund_sector_basic_materials DOUBLE,
    fund_sector_communication_services DOUBLE,
    fund_sector_consumer_cyclical DOUBLE,
    fund_sector_consumer_defensive DOUBLE,
    fund_sector_energy DOUBLE,
    fund_sector_financial_services DOUBLE,
    fund_sector_healthcare DOUBLE,
    fund_sector_industrials DOUBLE,
    fund_sector_real_estate DOUBLE,
    fund_sector_technology DOUBLE,
    fund_sector_utilities DOUBLE,
    fund_price_book_ratio DOUBLE,
    fund_price_cashflow_ratio DOUBLE,
    fund_price_earning_ratio DOUBLE,
    fund_price_sales_ratio DOUBLE,
    fund_bond_maturity DOUBLE,
    fund_bond_duration DOUBLE,
    fund_bonds_us_government DOUBLE,
    fund_bonds_aaa DOUBLE,
    fund_bonds_aa DOUBLE,
    fund_bonds_a DOUBLE,
    fund_bonds_bbb DOUBLE,
    fund_bonds_bb DOUBLE,
    fund_bonds_b DOUBLE,
    fund_bonds_below_b DOUBLE,
    fund_bonds_others DOUBLE,
    top10_holdings STRING,
    top10_holdings_total_assets DOUBLE,
    returns_as_of_date STRING,
    fund_return_ytd DOUBLE,
    category_return_ytd DOUBLE,
    fund_return_1month DOUBLE,
    category_return_1month DOUBLE,
    fund_return_3months DOUBLE,
    category_return_3months DOUBLE,
    fund_return_1year DOUBLE,
    category_return_1year DOUBLE,
    fund_return_3years DOUBLE,
    category_return_3years DOUBLE,
    fund_return_5years DOUBLE,
    category_return_5years DOUBLE,
    fund_return_10years DOUBLE,
    category_return_10years DOUBLE,
    years_up DOUBLE,
    years_down DOUBLE,
    fund_return_2020 DOUBLE,
    category_return_2020 DOUBLE,
    fund_return_2019 DOUBLE,
    category_return_2019 DOUBLE,
    fund_return_2018 DOUBLE,
    category_return_2018 DOUBLE,
    fund_return_2017 DOUBLE,
    category_return_2017 DOUBLE,
    fund_return_2016 DOUBLE,
    category_return_2016 DOUBLE,
    fund_return_2015 DOUBLE,
    category_return_2015 DOUBLE,
    fund_return_2014 DOUBLE,
    category_return_2014 DOUBLE,
    fund_return_2013 DOUBLE,
    category_return_2013 DOUBLE,
    fund_return_2012 DOUBLE,
    category_return_2012 DOUBLE,
    fund_return_2011 DOUBLE,
    category_return_2011 DOUBLE,
    fund_return_2010 DOUBLE,
    category_return_2010 DOUBLE,
    fund_return_2009 DOUBLE,
    category_return_2009 DOUBLE,
    fund_return_2008 DOUBLE,
    category_return_2008 DOUBLE,
    fund_return_2007 DOUBLE,
    category_return_2007 DOUBLE,
    fund_return_2006 DOUBLE,
    category_return_2006 DOUBLE,
    fund_return_2005 DOUBLE,
    category_return_2005 DOUBLE,
    fund_return_2004 DOUBLE,
    category_return_2004 DOUBLE,
    fund_return_2003 DOUBLE,
    category_return_2003 DOUBLE,
    fund_return_2002 DOUBLE,
    category_return_2002 DOUBLE,
    fund_return_2001 DOUBLE,
    category_return_2001 DOUBLE,
    fund_return_2000 DOUBLE,
    category_return_2000 DOUBLE,
    fund_alpha_3years DOUBLE,
    fund_beta_3years DOUBLE,
    fund_mean_annual_return_3years DOUBLE,
    fund_r_squared_3years DOUBLE,
    fund_stdev_3years DOUBLE,
    fund_sharpe_ratio_3years DOUBLE,
    fund_treynor_ratio_3years DOUBLE,
    fund_alpha_5years DOUBLE,
    fund_beta_5years DOUBLE,
    fund_mean_annual_return_5years DOUBLE,
    fund_r_squared_5years DOUBLE,
    fund_stdev_5years DOUBLE,
    fund_sharpe_ratio_5years DOUBLE,
    fund_treynor_ratio_5years DOUBLE,
    fund_alpha_10years DOUBLE,
    fund_beta_10years DOUBLE,
    fund_mean_annual_return_10years DOUBLE,
    fund_r_squared_10years DOUBLE,
    fund_stdev_10years DOUBLE,
    fund_sharpe_ratio_10years DOUBLE,
    fund_treynor_ratio_10years DOUBLE
);
CREATE TABLE IF not exists ETFPrices (
    fund_symbol STRING,
    price_date date,
    open DOUBLE,
    high DOUBLE,
    low DOUBLE,
    close DOUBLE,
    adj_close DOUBLE,
    volume BIGINT
);
CREATE TABLE IF not exists MutualFunds (
    fund_symbol STRING,
    quote_type STRING,
    region STRING,
    fund_short_name STRING,
    fund_long_name STRING,
    currency STRING,
    initial_investment DOUBLE,
    subsequent_investment DOUBLE,
    fund_category STRING,
    fund_family STRING,
    exchange_code STRING,
    exchange_name STRING,
    exchange_timezone STRING,
    management_name STRING,
    management_bio STRING,
    management_start_date STRING,
    total_net_assets DOUBLE,
    year_to_date_return DOUBLE,
    day50_moving_average DOUBLE,
    day200_moving_average DOUBLE,
    week52_high_low_change DOUBLE,
    week52_high_low_change_perc DOUBLE,
    week52_high DOUBLE,
    week52_high_change DOUBLE,
    week52_high_change_perc DOUBLE,
    week52_low DOUBLE,
    week52_low_change DOUBLE,
    week52_low_change_perc DOUBLE,
    investment_strategy STRING,
    fund_yield DOUBLE,
    morningstar_overall_rating DOUBLE,
    morningstar_risk_rating DOUBLE,
    inception_date STRING,
    last_dividend DOUBLE,
    last_cap_gain DOUBLE,
    annual_holdings_turnover DOUBLE,
    investment_type STRING,
    size_type STRING,
    fund_annual_report_net_expense_ratio DOUBLE,
    category_annual_report_net_expense_ratio DOUBLE,
    fund_prospectus_net_expense_ratio DOUBLE,
    fund_prospectus_gross_expense_ratio DOUBLE,
    fund_max_12b1_fee DOUBLE,
    fund_max_front_end_sales_load DOUBLE,
    category_max_front_end_sales_load DOUBLE,
    fund_max_deferred_sales_load DOUBLE,
    category_max_deferred_sales_load DOUBLE,
    fund_year3_expense_projection DOUBLE,
    fund_year5_expense_projection DOUBLE,
    fund_year10_expense_projection DOUBLE,
    asset_cash DOUBLE,
    asset_stocks DOUBLE,
    asset_bonds DOUBLE,
    asset_others DOUBLE,
    asset_preferred DOUBLE,
    asset_convertible DOUBLE,
    fund_sector_basic_materials DOUBLE,
    fund_sector_communication_services DOUBLE,
    fund_sector_consumer_cyclical DOUBLE,
    fund_sector_consumer_defensive DOUBLE,
    fund_sector_energy DOUBLE,
    fund_sector_financial_services DOUBLE,
    fund_sector_healthcare DOUBLE,
    fund_sector_industrials DOUBLE,
    fund_sector_real_estate DOUBLE,
    fund_sector_technology DOUBLE,
    fund_sector_utilities DOUBLE,
    fund_price_book_ratio DOUBLE,
    category_price_book_ratio DOUBLE,
    fund_price_cashflow_ratio DOUBLE,
    category_price_cashflow_ratio DOUBLE,
    fund_price_earning_ratio DOUBLE,
    category_price_earning_ratio DOUBLE,
    fund_price_sales_ratio DOUBLE,
    category_price_sales_ratio DOUBLE,
    fund_median_market_cap DOUBLE,
    category_median_market_cap DOUBLE,
    fund_year3_earnings_growth DOUBLE,
    category_year3_earnings_growth DOUBLE,
    fund_bond_maturity DOUBLE,
    category_bond_maturity DOUBLE,
    fund_bond_duration DOUBLE,
    category_bond_duration DOUBLE,
    fund_bonds_us_government DOUBLE,
    fund_bonds_aaa DOUBLE,
    fund_bonds_aa DOUBLE,
    fund_bonds_a DOUBLE,
    fund_bonds_bbb DOUBLE,
    fund_bonds_bb DOUBLE,
    fund_bonds_b DOUBLE,
    fund_bonds_below_b DOUBLE,
    fund_bonds_others DOUBLE,
    top10_holdings STRING,
    top10_holdings_total_assets DOUBLE,
    morningstar_return_rating DOUBLE,
    returns_as_of_date STRING,
    fund_return_ytd DOUBLE,
    category_return_ytd DOUBLE,
    fund_return_1month DOUBLE,
    category_return_1month DOUBLE,
    fund_return_3months DOUBLE,
    category_return_3months DOUBLE,
    fund_return_1year DOUBLE,
    category_return_1year DOUBLE,
    fund_return_3years DOUBLE,
    category_return_3years DOUBLE,
    fund_return_5years DOUBLE,
    category_return_5years DOUBLE,
    fund_return_10years DOUBLE,
    category_return_10years DOUBLE,
    fund_return_last_bull_market DOUBLE,
    category_return_last_bull_market DOUBLE,
    fund_return_last_bear_market DOUBLE,
    category_return_last_bear_market DOUBLE,
    years_up DOUBLE,
    years_down DOUBLE,
    fund_return_2020 DOUBLE,
    category_return_2020 DOUBLE,
    fund_return_2019 DOUBLE,
    category_return_2019 DOUBLE,
    fund_return_2018 DOUBLE,
    category_return_2018 DOUBLE,
    fund_return_2017 DOUBLE,
    category_return_2017 DOUBLE,
    fund_return_2016 DOUBLE,
    category_return_2016 DOUBLE,
    fund_return_2015 DOUBLE,
    category_return_2015 DOUBLE,
    fund_return_2014 DOUBLE,
    category_return_2014 DOUBLE,
    fund_return_2013 DOUBLE,
    category_return_2013 DOUBLE,
    fund_return_2012 DOUBLE,
    category_return_2012 DOUBLE,
    fund_return_2011 DOUBLE,
    category_return_2011 DOUBLE,
    fund_return_2010 DOUBLE,
    category_return_2010 DOUBLE,
    fund_return_2009 DOUBLE,
    category_return_2009 DOUBLE,
    fund_return_2008 DOUBLE,
    category_return_2008 DOUBLE,
    fund_return_2007 DOUBLE,
    category_return_2007 DOUBLE,
    fund_return_2006 DOUBLE,
    category_return_2006 DOUBLE,
    fund_return_2005 DOUBLE,
    category_return_2005 DOUBLE,
    fund_return_2004 DOUBLE,
    category_return_2004 DOUBLE,
    fund_return_2003 DOUBLE,
    category_return_2003 DOUBLE,
    fund_return_2002 DOUBLE,
    category_return_2002 DOUBLE,
    fund_return_2001 DOUBLE,
    category_return_2001 DOUBLE,
    fund_return_2000 DOUBLE,
    category_return_2000 DOUBLE,
    quarters_up DOUBLE,
    quarters_down DOUBLE,
    fund_return_2021_q3 DOUBLE,
    fund_return_2021_q2 DOUBLE,
    fund_return_2021_q1 DOUBLE,
    fund_return_2020_q4 DOUBLE,
    fund_return_2020_q3 DOUBLE,
    fund_return_2020_q2 DOUBLE,
    fund_return_2020_q1 DOUBLE,
    fund_return_2019_q4 DOUBLE,
    fund_return_2019_q3 DOUBLE,
    fund_return_2019_q2 DOUBLE,
    fund_return_2019_q1 DOUBLE,
    fund_return_2018_q4 DOUBLE,
    fund_return_2018_q3 DOUBLE,
    fund_return_2018_q2 DOUBLE,
    fund_return_2018_q1 DOUBLE,
    fund_return_2017_q4 DOUBLE,
    fund_return_2017_q3 DOUBLE,
    fund_return_2017_q2 DOUBLE,
    fund_return_2017_q1 DOUBLE,
    fund_return_2016_q4 DOUBLE,
    fund_return_2016_q3 DOUBLE,
    fund_return_2016_q2 DOUBLE,
    fund_return_2016_q1 DOUBLE,
    fund_return_2015_q4 DOUBLE,
    fund_return_2015_q3 DOUBLE,
    fund_return_2015_q2 DOUBLE,
    fund_return_2015_q1 DOUBLE,
    fund_return_2014_q4 DOUBLE,
    fund_return_2014_q3 DOUBLE,
    fund_return_2014_q2 DOUBLE,
    fund_return_2014_q1 DOUBLE,
    fund_return_2013_q4 DOUBLE,
    fund_return_2013_q3 DOUBLE,
    fund_return_2013_q2 DOUBLE,
    fund_return_2013_q1 DOUBLE,
    fund_return_2012_q4 DOUBLE,
    fund_return_2012_q3 DOUBLE,
    fund_return_2012_q2 DOUBLE,
    fund_return_2012_q1 DOUBLE,
    fund_return_2011_q4 DOUBLE,
    fund_return_2011_q3 DOUBLE,
    fund_return_2011_q2 DOUBLE,
    fund_return_2011_q1 DOUBLE,
    fund_return_2010_q4 DOUBLE,
    fund_return_2010_q3 DOUBLE,
    fund_return_2010_q2 DOUBLE,
    fund_return_2010_q1 DOUBLE,
    fund_return_2009_q4 DOUBLE,
    fund_return_2009_q3 DOUBLE,
    fund_return_2009_q2 DOUBLE,
    fund_return_2009_q1 DOUBLE,
    fund_return_2008_q4 DOUBLE,
    fund_return_2008_q3 DOUBLE,
    fund_return_2008_q2 DOUBLE,
    fund_return_2008_q1 DOUBLE,
    fund_return_2007_q4 DOUBLE,
    fund_return_2007_q3 DOUBLE,
    fund_return_2007_q2 DOUBLE,
    fund_return_2007_q1 DOUBLE,
    fund_return_2006_q4 DOUBLE,
    fund_return_2006_q3 DOUBLE,
    fund_return_2006_q2 DOUBLE,
    fund_return_2006_q1 DOUBLE,
    fund_return_2005_q4 DOUBLE,
    fund_return_2005_q3 DOUBLE,
    fund_return_2005_q2 DOUBLE,
    fund_return_2005_q1 DOUBLE,
    fund_return_2004_q4 DOUBLE,
    fund_return_2004_q3 DOUBLE,
    fund_return_2004_q2 DOUBLE,
    fund_return_2004_q1 DOUBLE,
    fund_return_2003_q4 DOUBLE,
    fund_return_2003_q3 DOUBLE,
    fund_return_2003_q2 DOUBLE,
    fund_return_2003_q1 DOUBLE,
    fund_return_2002_q4 DOUBLE,
    fund_return_2002_q3 DOUBLE,
    fund_return_2002_q2 DOUBLE,
    fund_return_2002_q1 DOUBLE,
    fund_return_2001_q4 DOUBLE,
    fund_return_2001_q3 DOUBLE,
    fund_return_2001_q2 DOUBLE,
    fund_return_2001_q1 DOUBLE,
    fund_return_2000_q4 DOUBLE,
    fund_return_2000_q3 DOUBLE,
    fund_return_2000_q2 DOUBLE,
    fund_return_2000_q1 DOUBLE,
    fund_alpha_3years DOUBLE,
    fund_beta_3years DOUBLE,
    fund_mean_annual_return_3years DOUBLE,
    fund_r_squared_3years DOUBLE,
    fund_stdev_3years DOUBLE,
    fund_sharpe_ratio_3years DOUBLE,
    fund_treynor_ratio_3years DOUBLE,
    fund_alpha_5years DOUBLE,
    fund_beta_5years DOUBLE,
    fund_mean_annual_return_5years DOUBLE,
    fund_r_squared_5years DOUBLE,
    fund_stdev_5years DOUBLE,
    fund_sharpe_ratio_5years DOUBLE,
    fund_treynor_ratio_5years DOUBLE,
    fund_alpha_10years DOUBLE,
    fund_beta_10years DOUBLE,
    fund_mean_annual_return_10years DOUBLE,
    fund_r_squared_10years DOUBLE,
    fund_stdev_10years DOUBLE,
    fund_sharpe_ratio_10years DOUBLE,
    fund_treynor_ratio_10years DOUBLE,
    fund_return_category_rank_ytd DOUBLE,
    fund_return_category_rank_1month DOUBLE,
    fund_return_category_rank_3months DOUBLE,
    fund_return_category_rank_1year DOUBLE,
    fund_return_category_rank_3years DOUBLE,
    fund_return_category_rank_5years DOUBLE,
    load_adj_return_1year DOUBLE,
    load_adj_return_3years DOUBLE,
    load_adj_return_5years DOUBLE,
    load_adj_return_10years DOUBLE,
    sustainability_score DOUBLE,
    sustainability_rank DOUBLE,
    esg_peer_group STRING,
    esg_peer_count DOUBLE,
    esg_score DOUBLE,
    peer_esg_min DOUBLE,
    peer_esg_avg DOUBLE,
    peer_esg_max DOUBLE,
    environment_score DOUBLE,
    peer_environment_min DOUBLE,
    peer_environment_avg DOUBLE,
    peer_environment_max DOUBLE,
    social_score DOUBLE,
    peer_social_min DOUBLE,
    peer_social_avg DOUBLE,
    peer_social_max DOUBLE,
    governance_score DOUBLE,
    peer_governance_min DOUBLE,
    peer_governance_avg DOUBLE,
    peer_governance_max DOUBLE
);
CREATE TABLE IF not exists MutualFundPrices (
    fund_symbol STRING,
    price_date date,
    nav_per_share DOUBLE
);

任务三:给表和字段加上中文注释,方便中文口径的对齐

由于每个表的字段很多,4张表有460个字段,根据经验这样的活还是交给Azure Copilot比较靠谱。也是经过分段处理,Azure Copilot最终还是帮忙生成了字段和表的注释语句。

ALTER TABLE ETFs 
CHANGE COLUMN fund_symbol COMMENT '基金代码',
CHANGE COLUMN quote_type COMMENT '报价类型',
CHANGE COLUMN region COMMENT '地区',
CHANGE COLUMN fund_short_name COMMENT '基金简称',
CHANGE COLUMN fund_long_name COMMENT '基金全称',
CHANGE COLUMN currency COMMENT '货币',
CHANGE COLUMN fund_category COMMENT '基金类别',
CHANGE COLUMN fund_family COMMENT '基金家族',
CHANGE COLUMN exchange_code COMMENT '交易所代码',
CHANGE COLUMN exchange_name COMMENT '交易所名称',
CHANGE COLUMN exchange_timezone COMMENT '交易所时区',
CHANGE COLUMN avg_vol_3month COMMENT '三个月平均成交量',
CHANGE COLUMN avg_vol_10day COMMENT '十天平均成交量',
CHANGE COLUMN total_net_assets COMMENT '总净资产',
CHANGE COLUMN day50_moving_average COMMENT '50天移动平均线',
CHANGE COLUMN day200_moving_average COMMENT '200天移动平均线',
CHANGE COLUMN week52_high_low_change COMMENT '52周高低变化',
CHANGE COLUMN week52_high_low_change_perc COMMENT '52周高低变化百分比',
CHANGE COLUMN week52_high COMMENT '52周最高',
CHANGE COLUMN week52_high_change COMMENT '52周最高变化',
CHANGE COLUMN week52_high_change_perc COMMENT '52周最高变化百分比',
CHANGE COLUMN week52_low COMMENT '52周最低',
CHANGE COLUMN week52_low_change COMMENT '52周最低变化',
CHANGE COLUMN week52_low_change_perc COMMENT '52周最低变化百分比',
CHANGE COLUMN investment_strategy COMMENT '投资策略',
CHANGE COLUMN fund_yield COMMENT '基金收益率',
CHANGE COLUMN inception_date COMMENT '成立日期',
CHANGE COLUMN annual_holdings_turnover COMMENT '年度持仓周转率',
CHANGE COLUMN investment_type COMMENT '投资类型',
CHANGE COLUMN size_type COMMENT '规模类型',
CHANGE COLUMN fund_annual_report_net_expense_ratio COMMENT '基金年度报告净费用率',
CHANGE COLUMN category_annual_report_net_expense_ratio COMMENT '类别年度报告净费用率',
CHANGE COLUMN asset_stocks COMMENT '股票资产',
CHANGE COLUMN asset_bonds COMMENT '债券资产',
CHANGE COLUMN fund_sector_basic_materials COMMENT '基金行业-基础材料',
CHANGE COLUMN fund_sector_communication_services COMMENT '基金行业-通信服务',
CHANGE COLUMN fund_sector_consumer_cyclical COMMENT '基金行业-周期性消费',
CHANGE COLUMN fund_sector_consumer_defensive COMMENT '基金行业-防御性消费',
CHANGE COLUMN fund_sector_energy COMMENT '基金行业-能源',
CHANGE COLUMN fund_sector_financial_services COMMENT '基金行业-金融服务',
CHANGE COLUMN fund_sector_healthcare COMMENT '基金行业-医疗保健',
CHANGE COLUMN fund_sector_industrials COMMENT '基金行业-工业',
CHANGE COLUMN fund_sector_real_estate COMMENT '基金行业-房地产',
CHANGE COLUMN fund_sector_technology COMMENT '基金行业-科技',
CHANGE COLUMN fund_sector_utilities COMMENT '基金行业-公用事业',
CHANGE COLUMN fund_price_book_ratio COMMENT '基金市净率',
CHANGE COLUMN fund_price_cashflow_ratio COMMENT '基金市现率',
CHANGE COLUMN fund_price_earning_ratio COMMENT '基金市盈率',
CHANGE COLUMN fund_price_sales_ratio COMMENT '基金市销率',
CHANGE COLUMN fund_bond_maturity COMMENT '基金债券到期',
CHANGE COLUMN fund_bond_duration COMMENT '基金债券久期',
CHANGE COLUMN fund_bonds_us_government COMMENT '基金债券-美国政府',
CHANGE COLUMN fund_bonds_aaa COMMENT '基金债券-AAA',
CHANGE COLUMN fund_bonds_aa COMMENT '基金债券-AA',
CHANGE COLUMN fund_bonds_a COMMENT '基金债券-A',
CHANGE COLUMN fund_bonds_bbb COMMENT '基金债券-BBB',
CHANGE COLUMN fund_bonds_bb COMMENT '基金债券-BB',
CHANGE COLUMN fund_bonds_b COMMENT '基金债券-B',
CHANGE COLUMN fund_bonds_below_b COMMENT '基金债券-B以下',
CHANGE COLUMN fund_bonds_others COMMENT '基金债券-其他',
CHANGE COLUMN top10_holdings COMMENT '前十大持仓',
CHANGE COLUMN top10_holdings_total_assets COMMENT '前十大持仓总资产',
CHANGE COLUMN returns_as_of_date COMMENT '收益截至日期',
CHANGE COLUMN fund_return_ytd COMMENT '基金年初至今收益',
CHANGE COLUMN category_return_ytd COMMENT '类别年初至今收益',
CHANGE COLUMN fund_return_1month COMMENT '基金1个月收益',
CHANGE COLUMN category_return_1month COMMENT '类别1个月收益',
CHANGE COLUMN fund_return_3months COMMENT '基金3个月收益',
CHANGE COLUMN category_return_3months COMMENT '类别3个月收益',
CHANGE COLUMN fund_return_1year COMMENT '基金1年收益',
CHANGE COLUMN category_return_1year COMMENT '类别1年收益',
CHANGE COLUMN fund_return_3years COMMENT '基金3年收益',
CHANGE COLUMN category_return_3years COMMENT '类别3年收益',
CHANGE COLUMN fund_return_5years COMMENT '基金5年收益',
CHANGE COLUMN category_return_5years COMMENT '类别5年收益',
CHANGE COLUMN fund_return_10years COMMENT '基金10年收益',
CHANGE COLUMN category_return_10years COMMENT '类别10年收益',
CHANGE COLUMN years_up COMMENT '上涨年份',
CHANGE COLUMN years_down COMMENT '下跌年份',
CHANGE COLUMN fund_return_2020 COMMENT '基金2020年收益',
CHANGE COLUMN category_return_2020 COMMENT '类别2020年收益',
CHANGE COLUMN fund_return_2019 COMMENT '基金2019年收益',
CHANGE COLUMN category_return_2019 COMMENT '类别2019年收益',
CHANGE COLUMN fund_return_2018 COMMENT '基金2018年收益',
CHANGE COLUMN category_return_2018 COMMENT '类别2018年收益',
CHANGE COLUMN fund_return_2017 COMMENT '基金2017年收益',
CHANGE COLUMN category_return_2017 COMMENT '类别2017年收益',
CHANGE COLUMN fund_return_2016 COMMENT '基金2016年收益',
CHANGE COLUMN category_return_2016 COMMENT '类别2016年收益',
CHANGE COLUMN fund_return_2015 COMMENT '基金2015年收益',
CHANGE COLUMN category_return_2015 COMMENT '类别2015年收益',
CHANGE COLUMN fund_return_2014 COMMENT '基金2014年收益',
CHANGE COLUMN category_return_2014 COMMENT '类别2014年收益',
CHANGE COLUMN fund_return_2013 COMMENT '基金2013年收益',
CHANGE COLUMN category_return_2013 COMMENT '类别2013年收益',
CHANGE COLUMN fund_return_2012 COMMENT '基金2012年收益',
CHANGE COLUMN category_return_2012 COMMENT '类别2012年收益',
CHANGE COLUMN fund_return_2011 COMMENT '基金2011年收益',
CHANGE COLUMN category_return_2011 COMMENT '类别2011年收益',
CHANGE COLUMN fund_return_2010 COMMENT '基金2010年收益',
CHANGE COLUMN category_return_2010 COMMENT '类别2010年收益',
CHANGE COLUMN fund_return_2009 COMMENT '基金2009年收益',
CHANGE COLUMN category_return_2009 COMMENT '类别2009年收益',
CHANGE COLUMN fund_return_2008 COMMENT '基金2008年收益',
CHANGE COLUMN category_return_2008 COMMENT '类别2008年收益',
CHANGE COLUMN fund_return_2007 COMMENT '基金2007年收益',
CHANGE COLUMN category_return_2007 COMMENT '类别2007年收益',
CHANGE COLUMN fund_return_2006 COMMENT '基金2006年收益',
CHANGE COLUMN category_return_2006 COMMENT '类别2006年收益',
CHANGE COLUMN fund_return_2005 COMMENT '基金2005年收益',
CHANGE COLUMN category_return_2005 COMMENT '类别2005年收益',
CHANGE COLUMN fund_return_2004 COMMENT '基金2004年收益',
CHANGE COLUMN category_return_2004 COMMENT '类别2004年收益',
CHANGE COLUMN fund_return_2003 COMMENT '基金2003年收益',
CHANGE COLUMN category_return_2003 COMMENT '类别2003年收益',
CHANGE COLUMN fund_return_2002 COMMENT '基金2002年收益',
CHANGE COLUMN category_return_2002 COMMENT '类别2002年收益',
CHANGE COLUMN fund_return_2001 COMMENT '基金2001年收益',
CHANGE COLUMN category_return_2001 COMMENT '类别2001年收益',
CHANGE COLUMN fund_return_2000 COMMENT '基金2000年收益',
CHANGE COLUMN category_return_2000 COMMENT '类别2000年收益',
CHANGE COLUMN fund_alpha_3years COMMENT '基金3年阿尔法',
CHANGE COLUMN fund_beta_3years COMMENT '基金3年贝塔',
CHANGE COLUMN fund_mean_annual_return_3years COMMENT '基金3年平均年收益',
CHANGE COLUMN fund_r_squared_3years COMMENT '基金3年R平方',
CHANGE COLUMN fund_stdev_3years COMMENT '基金3年标准差',
CHANGE COLUMN fund_sharpe_ratio_3years COMMENT '基金3年夏普比率',
CHANGE COLUMN fund_treynor_ratio_3years COMMENT '基金3年特雷诺比率',
CHANGE COLUMN fund_alpha_5years COMMENT '基金5年阿尔法',
CHANGE COLUMN fund_beta_5years COMMENT '基金5年贝塔',
CHANGE COLUMN fund_mean_annual_return_5years COMMENT '基金5年平均年收益',
CHANGE COLUMN fund_r_squared_5years COMMENT '基金5年R平方',
CHANGE COLUMN fund_stdev_5years COMMENT '基金5年标准差',
CHANGE COLUMN fund_sharpe_ratio_5years COMMENT '基金5年夏普比率',
CHANGE COLUMN fund_treynor_ratio_5years COMMENT '基金5年特雷诺比率',
CHANGE COLUMN fund_alpha_10years COMMENT '基金10年阿尔法',
CHANGE COLUMN fund_beta_10years COMMENT '基金10年贝塔',
CHANGE COLUMN fund_mean_annual_return_10years COMMENT '基金10年平均年收益',
CHANGE COLUMN fund_r_squared_10years COMMENT '基金10年R平方',
CHANGE COLUMN fund_stdev_10years COMMENT '基金10年标准差',
CHANGE COLUMN fund_sharpe_ratio_10years COMMENT '基金10年夏普比率',
CHANGE COLUMN fund_treynor_ratio_10years COMMENT '基金10年特雷诺比率';

ALTER TABLE ETFPrices 
CHANGE COLUMN fund_symbol COMMENT '基金代码',
CHANGE COLUMN price_date COMMENT '价格日期',
CHANGE COLUMN open COMMENT '开盘价',
CHANGE COLUMN high COMMENT '最高价',
CHANGE COLUMN low COMMENT '最低价',
CHANGE COLUMN close COMMENT '收盘价',
CHANGE COLUMN adj_close COMMENT '调整后收盘价',
CHANGE COLUMN volume COMMENT '成交量';

ALTER TABLE MutualFunds 
CHANGE COLUMN fund_symbol COMMENT '基金代码',
CHANGE COLUMN quote_type COMMENT '报价类型',
CHANGE COLUMN region COMMENT '地区',
CHANGE COLUMN fund_short_name COMMENT '基金简称',
CHANGE COLUMN fund_long_name COMMENT '基金全称',
CHANGE COLUMN currency COMMENT '货币',
CHANGE COLUMN initial_investment COMMENT '初始投资',
CHANGE COLUMN subsequent_investment COMMENT '后续投资',
CHANGE COLUMN fund_category COMMENT '基金类别',
CHANGE COLUMN fund_family COMMENT '基金家族',
CHANGE COLUMN exchange_code COMMENT '交易所代码',
CHANGE COLUMN exchange_name COMMENT '交易所名称',
CHANGE COLUMN exchange_timezone COMMENT '交易所时区',
CHANGE COLUMN management_name COMMENT '管理人姓名',
CHANGE COLUMN management_bio COMMENT '管理人简介',
CHANGE COLUMN management_start_date COMMENT '管理开始日期',
CHANGE COLUMN total_net_assets COMMENT '总净资产',
CHANGE COLUMN year_to_date_return COMMENT '年初至今收益',
CHANGE COLUMN day50_moving_average COMMENT '50天移动平均线',
CHANGE COLUMN day200_moving_average COMMENT '200天移动平均线',
CHANGE COLUMN week52_high_low_change COMMENT '52周高低变化',
CHANGE COLUMN week52_high_low_change_perc COMMENT '52周高低变化百分比',
CHANGE COLUMN week52_high COMMENT '52周最高',
CHANGE COLUMN week52_high_change COMMENT '52周最高变化',
CHANGE COLUMN week52_high_change_perc COMMENT '52周最高变化百分比',
CHANGE COLUMN week52_low COMMENT '52周最低',
CHANGE COLUMN week52_low_change COMMENT '52周最低变化',
CHANGE COLUMN week52_low_change_perc COMMENT '52周最低变化百分比',
CHANGE COLUMN investment_strategy COMMENT '投资策略',
CHANGE COLUMN fund_yield COMMENT '基金收益率',
CHANGE COLUMN morningstar_overall_rating COMMENT '晨星总体评级',
CHANGE COLUMN morningstar_risk_rating COMMENT '晨星风险评级',
CHANGE COLUMN inception_date COMMENT '成立日期',
CHANGE COLUMN last_dividend COMMENT '最近分红',
CHANGE COLUMN last_cap_gain COMMENT '最近资本增益',
CHANGE COLUMN annual_holdings_turnover COMMENT '年度持仓周转率',
CHANGE COLUMN investment_type COMMENT '投资类型',
CHANGE COLUMN size_type COMMENT '规模类型',
CHANGE COLUMN fund_annual_report_net_expense_ratio COMMENT '基金年度报告净费用率',
CHANGE COLUMN category_annual_report_net_expense_ratio COMMENT '类别年度报告净费用率',
CHANGE COLUMN fund_prospectus_net_expense_ratio COMMENT '基金招股说明书净费用率',
CHANGE COLUMN fund_prospectus_gross_expense_ratio COMMENT '基金招股说明书总费用率',
CHANGE COLUMN fund_max_12b1_fee COMMENT '基金最大12b1费用',
CHANGE COLUMN fund_max_front_end_sales_load COMMENT '基金最大前端销售费用',
CHANGE COLUMN category_max_front_end_sales_load COMMENT '类别最大前端销售费用',
CHANGE COLUMN fund_max_deferred_sales_load COMMENT '基金最大递延销售费用',
CHANGE COLUMN category_max_deferred_sales_load COMMENT '类别最大递延销售费用',
CHANGE COLUMN fund_year3_expense_projection COMMENT '基金3年费用预测',
CHANGE COLUMN fund_year5_expense_projection COMMENT '基金5年费用预测',
CHANGE COLUMN fund_year10_expense_projection COMMENT '基金10年费用预测',
CHANGE COLUMN asset_cash COMMENT '现金资产',
CHANGE COLUMN asset_stocks COMMENT '股票资产',
CHANGE COLUMN asset_bonds COMMENT '债券资产',
CHANGE COLUMN asset_others COMMENT '其他资产',
CHANGE COLUMN asset_preferred COMMENT '优先股资产',
CHANGE COLUMN asset_convertible COMMENT '可转换资产',
CHANGE COLUMN fund_sector_basic_materials COMMENT '基金行业-基础材料',
CHANGE COLUMN fund_sector_communication_services COMMENT '基金行业-通信服务',
CHANGE COLUMN fund_sector_consumer_cyclical COMMENT '基金行业-周期性消费',
CHANGE COLUMN fund_sector_consumer_defensive COMMENT '基金行业-防御性消费',
CHANGE COLUMN fund_sector_energy COMMENT '基金行业-能源',
CHANGE COLUMN fund_sector_financial_services COMMENT '基金行业-金融服务',
CHANGE COLUMN fund_sector_healthcare COMMENT '基金行业-医疗保健',
CHANGE COLUMN fund_sector_industrials COMMENT '基金行业-工业',
CHANGE COLUMN fund_sector_real_estate COMMENT '基金行业-房地产',
CHANGE COLUMN fund_sector_technology COMMENT '基金行业-科技',
CHANGE COLUMN fund_sector_utilities COMMENT '基金行业-公用事业',
CHANGE COLUMN fund_price_book_ratio COMMENT '基金市净率',
CHANGE COLUMN category_price_book_ratio COMMENT '类别市净率',
CHANGE COLUMN fund_price_cashflow_ratio COMMENT '基金市现率',
CHANGE COLUMN category_price_cashflow_ratio COMMENT '类别市现率',
CHANGE COLUMN fund_price_earning_ratio COMMENT '基金市盈率',
CHANGE COLUMN category_price_earning_ratio COMMENT '类别市盈率',
CHANGE COLUMN fund_price_sales_ratio COMMENT '基金市销率',
CHANGE COLUMN category_price_sales_ratio COMMENT '类别市销率',
CHANGE COLUMN fund_median_market_cap COMMENT '基金中位市值',
CHANGE COLUMN category_median_market_cap COMMENT '类别中位市值',
CHANGE COLUMN fund_year3_earnings_growth COMMENT '基金3年收益增长',
CHANGE COLUMN category_year3_earnings_growth COMMENT '类别3年收益增长',
CHANGE COLUMN fund_bond_maturity COMMENT '基金债券到期',
CHANGE COLUMN category_bond_maturity COMMENT '类别债券到期',
CHANGE COLUMN fund_bond_duration COMMENT '基金债券久期',
CHANGE COLUMN category_bond_duration COMMENT '类别债券久期',
CHANGE COLUMN fund_bonds_us_government COMMENT '基金债券-美国政府',
CHANGE COLUMN fund_bonds_aaa COMMENT '基金债券-AAA',
CHANGE COLUMN fund_bonds_aa COMMENT '基金债券-AA',
CHANGE COLUMN fund_bonds_a COMMENT '基金债券-A',
CHANGE COLUMN fund_bonds_bbb COMMENT '基金债券-BBB',
CHANGE COLUMN fund_bonds_bb COMMENT '基金债券-BB',
CHANGE COLUMN fund_bonds_b COMMENT '基金债券-B',
CHANGE COLUMN fund_bonds_below_b COMMENT '基金债券-B以下',
CHANGE COLUMN fund_bonds_others COMMENT '基金债券-其他',
CHANGE COLUMN top10_holdings COMMENT '前十大持仓',
CHANGE COLUMN top10_holdings_total_assets COMMENT '前十大持仓总资产',
CHANGE COLUMN morningstar_return_rating COMMENT '晨星收益评级',
CHANGE COLUMN returns_as_of_date COMMENT '收益截至日期',
CHANGE COLUMN fund_return_ytd COMMENT '基金年初至今收益',
CHANGE COLUMN category_return_ytd COMMENT '类别年初至今收益',
CHANGE COLUMN fund_return_1month COMMENT '基金1个月收益',
CHANGE COLUMN category_return_1month COMMENT '类别1个月收益',
CHANGE COLUMN fund_return_3months COMMENT '基金3个月收益',
CHANGE COLUMN category_return_3months COMMENT '类别3个月收益',
CHANGE COLUMN fund_return_1year COMMENT '基金1年收益',
CHANGE COLUMN category_return_1year COMMENT '类别1年收益',
CHANGE COLUMN fund_return_3years COMMENT '基金3年收益',
CHANGE COLUMN category_return_3years COMMENT '类别3年收益',
CHANGE COLUMN fund_return_5years COMMENT '基金5年收益',
CHANGE COLUMN category_return_5years COMMENT '类别5年收益',
CHANGE COLUMN fund_return_10years COMMENT '基金10年收益',
CHANGE COLUMN category_return_10years COMMENT '类别10年收益',
CHANGE COLUMN fund_return_last_bull_market COMMENT '基金上次牛市收益',
CHANGE COLUMN category_return_last_bull_market COMMENT '类别上次牛市收益',
CHANGE COLUMN fund_return_last_bear_market COMMENT '基金上次熊市收益',
CHANGE COLUMN category_return_last_bear_market COMMENT '类别上次熊市收益',
CHANGE COLUMN years_up COMMENT '上涨年份',
CHANGE COLUMN years_down COMMENT '下跌年份',
CHANGE COLUMN fund_return_2020 COMMENT '基金2020年收益',
CHANGE COLUMN category_return_2020 COMMENT '类别2020年收益',
CHANGE COLUMN fund_return_2019 COMMENT '基金2019年收益',
CHANGE COLUMN category_return_2019 COMMENT '类别2019年收益',
CHANGE COLUMN fund_return_2018 COMMENT '基金2018年收益',
CHANGE COLUMN category_return_2018 COMMENT '类别2018年收益',
CHANGE COLUMN fund_return_2017 COMMENT '基金2017年收益',
CHANGE COLUMN category_return_2017 COMMENT '类别2017年收益',
CHANGE COLUMN fund_return_2016 COMMENT '基金2016年收益',
CHANGE COLUMN category_return_2016 COMMENT '类别2016年收益',
CHANGE COLUMN fund_return_2015 COMMENT '基金2015年收益',
CHANGE COLUMN category_return_2015 COMMENT '类别2015年收益',
CHANGE COLUMN fund_return_2014 COMMENT '基金2014年收益',
CHANGE COLUMN category_return_2014 COMMENT '类别2014年收益',
CHANGE COLUMN fund_return_2013 COMMENT '基金2013年收益',
CHANGE COLUMN category_return_2013 COMMENT '类别2013年收益',
CHANGE COLUMN fund_return_2012 COMMENT '基金2012年收益',
CHANGE COLUMN category_return_2012 COMMENT '类别2012年收益',
CHANGE COLUMN fund_return_2011 COMMENT '基金2011年收益',
CHANGE COLUMN category_return_2011 COMMENT '类别2011年收益',
CHANGE COLUMN fund_return_2010 COMMENT '基金2010年收益',
CHANGE COLUMN category_return_2010 COMMENT '类别2010年收益',
CHANGE COLUMN fund_return_2009 COMMENT '基金2009年收益',
CHANGE COLUMN category_return_2009 COMMENT '类别2009年收益',
CHANGE COLUMN fund_return_2008 COMMENT '基金2008年收益',
CHANGE COLUMN category_return_2008 COMMENT '类别2008年收益',
CHANGE COLUMN fund_return_2007 COMMENT '基金2007年收益',
CHANGE COLUMN category_return_2007 COMMENT '类别2007年收益',
CHANGE COLUMN fund_return_2006 COMMENT '基金2006年收益',
CHANGE COLUMN category_return_2006 COMMENT '类别2006年收益',
CHANGE COLUMN fund_return_2005 COMMENT '基金2005年收益',
CHANGE COLUMN category_return_2005 COMMENT '类别2005年收益',
CHANGE COLUMN fund_return_2004 COMMENT '基金2004年收益',
CHANGE COLUMN category_return_2004 COMMENT '类别2004年收益',
CHANGE COLUMN fund_return_2003 COMMENT '基金2003年收益',
CHANGE COLUMN category_return_2003 COMMENT '类别2003年收益',
CHANGE COLUMN fund_return_2002 COMMENT '基金2002年收益',
CHANGE COLUMN category_return_2002 COMMENT '类别2002年收益',
CHANGE COLUMN fund_return_2001 COMMENT '基金2001年收益',
CHANGE COLUMN category_return_2001 COMMENT '类别2001年收益',
CHANGE COLUMN fund_return_2000 COMMENT '基金2000年收益',
CHANGE COLUMN category_return_2000 COMMENT '类别2000年收益',
CHANGE COLUMN quarters_up COMMENT '上涨季度',
CHANGE COLUMN quarters_down COMMENT '下跌季度',
CHANGE COLUMN fund_return_2021_q3 COMMENT '基金2021年第三季度收益',
CHANGE COLUMN fund_return_2021_q2 COMMENT '基金2021年第二季度收益',
CHANGE COLUMN fund_return_2021_q1 COMMENT '基金2021年第一季度收益',
CHANGE COLUMN fund_return_2020_q4 COMMENT '基金2020年第四季度收益',
CHANGE COLUMN fund_return_2020_q3 COMMENT '基金2020年第三季度收益',
CHANGE COLUMN fund_return_2020_q2 COMMENT '基金2020年第二季度收益',
CHANGE COLUMN fund_return_2020_q1 COMMENT '基金2020年第一季度收益',
CHANGE COLUMN fund_return_2019_q4 COMMENT '基金2019年第四季度收益',
CHANGE COLUMN fund_return_2019_q3 COMMENT '基金2019年第三季度收益',
CHANGE COLUMN fund_return_2019_q2 COMMENT '基金2019年第二季度收益',
CHANGE COLUMN fund_return_2019_q1 COMMENT '基金2019年第一季度收益',
CHANGE COLUMN fund_return_2018_q4 COMMENT '基金2018年第四季度收益',
CHANGE COLUMN fund_return_2018_q3 COMMENT '基金2018年第三季度收益',
CHANGE COLUMN fund_return_2018_q2 COMMENT '基金2018年第二季度收益',
CHANGE COLUMN fund_return_2018_q1 COMMENT '基金2018年第一季度收益',
CHANGE COLUMN fund_return_2017_q4 COMMENT '基金2017年第四季度收益',
CHANGE COLUMN fund_return_2017_q3 COMMENT '基金2017年第三季度收益',
CHANGE COLUMN fund_return_2017_q2 COMMENT '基金2017年第二季度收益',
CHANGE COLUMN fund_return_2017_q1 COMMENT '基金2017年第一季度收益',
CHANGE COLUMN fund_return_2016_q4 COMMENT '基金2016年第四季度收益',
CHANGE COLUMN fund_return_2016_q3 COMMENT '基金2016年第三季度收益',
CHANGE COLUMN fund_return_2016_q2 COMMENT '基金2016年第二季度收益',
CHANGE COLUMN fund_return_2016_q1 COMMENT '基金2016年第一季度收益',
CHANGE COLUMN fund_return_2015_q4 COMMENT '基金2015年第四季度收益',
CHANGE COLUMN fund_return_2015_q3 COMMENT '基金2015年第三季度收益',
CHANGE COLUMN fund_return_2015_q2 COMMENT '基金2015年第二季度收益',
CHANGE COLUMN fund_return_2015_q1 COMMENT '基金2015年第一季度收益',
CHANGE COLUMN fund_return_2014_q4 COMMENT '基金2014年第四季度收益',
CHANGE COLUMN fund_return_2014_q3 COMMENT '基金2014年第三季度收益',
CHANGE COLUMN fund_return_2014_q2 COMMENT '基金2014年第二季度收益',
CHANGE COLUMN fund_return_2014_q1 COMMENT '基金2014年第一季度收益',
CHANGE COLUMN fund_return_2013_q4 COMMENT '基金2013年第四季度收益',
CHANGE COLUMN fund_return_2013_q3 COMMENT '基金2013年第三季度收益',
CHANGE COLUMN fund_return_2013_q2 COMMENT '基金2013年第二季度收益',
CHANGE COLUMN fund_return_2013_q1 COMMENT '基金2013年第一季度收益',
CHANGE COLUMN fund_return_2012_q4 COMMENT '基金2012年第四季度收益',
CHANGE COLUMN fund_return_2012_q3 COMMENT '基金2012年第三季度收益',
CHANGE COLUMN fund_return_2012_q2 COMMENT '基金2012年第二季度收益',
CHANGE COLUMN fund_return_2012_q1 COMMENT '基金2012年第一季度收益',
CHANGE COLUMN fund_return_2011_q4 COMMENT '基金2011年第四季度收益',
CHANGE COLUMN fund_return_2011_q3 COMMENT '基金2011年第三季度收益',
CHANGE COLUMN fund_return_2011_q2 COMMENT '基金2011年第二季度收益',
CHANGE COLUMN fund_return_2011_q1 COMMENT '基金2011年第一季度收益',
CHANGE COLUMN fund_return_2010_q4 COMMENT '基金2010年第四季度收益',
CHANGE COLUMN fund_return_2010_q3 COMMENT '基金2010年第三季度收益',
CHANGE COLUMN fund_return_2010_q2 COMMENT '基金2010年第二季度收益',
CHANGE COLUMN fund_return_2010_q1 COMMENT '基金2010年第一季度收益',
CHANGE COLUMN fund_return_2009_q4 COMMENT '基金2009年第四季度收益',
CHANGE COLUMN fund_return_2009_q3 COMMENT '基金2009年第三季度收益',
CHANGE COLUMN fund_return_2009_q2 COMMENT '基金2009年第二季度收益',
CHANGE COLUMN fund_return_2009_q1 COMMENT '基金2009年第一季度收益',
CHANGE COLUMN fund_return_2008_q4 COMMENT '基金2008年第四季度收益',
CHANGE COLUMN fund_return_2008_q3 COMMENT '基金2008年第三季度收益',
CHANGE COLUMN fund_return_2008_q2 COMMENT '基金2008年第二季度收益',
CHANGE COLUMN fund_return_2008_q1 COMMENT '基金2008年第一季度收益',
CHANGE COLUMN fund_return_2007_q4 COMMENT '基金2007年第四季度收益',
CHANGE COLUMN fund_return_2007_q3 COMMENT '基金2007年第三季度收益',
CHANGE COLUMN fund_return_2007_q2 COMMENT '基金2007年第二季度收益',
CHANGE COLUMN fund_return_2007_q1 COMMENT '基金2007年第一季度收益',
CHANGE COLUMN fund_return_2006_q4 COMMENT '基金2006年第四季度收益',
CHANGE COLUMN fund_return_2006_q3 COMMENT '基金2006年第三季度收益',
CHANGE COLUMN fund_return_2006_q2 COMMENT '基金2006年第二季度收益',
CHANGE COLUMN fund_return_2006_q1 COMMENT '基金2006年第一季度收益',
CHANGE COLUMN fund_return_2005_q4 COMMENT '基金2005年第四季度收益',
CHANGE COLUMN fund_return_2005_q3 COMMENT '基金2005年第三季度收益',
CHANGE COLUMN fund_return_2005_q2 COMMENT '基金2005年第二季度收益',
CHANGE COLUMN fund_return_2005_q1 COMMENT '基金2005年第一季度收益',
CHANGE COLUMN fund_return_2004_q4 COMMENT '基金2004年第四季度收益',
CHANGE COLUMN fund_return_2004_q3 COMMENT '基金2004年第三季度收益',
CHANGE COLUMN fund_return_2004_q2 COMMENT '基金2004年第二季度收益',
CHANGE COLUMN fund_return_2004_q1 COMMENT '基金2004年第一季度收益',
CHANGE COLUMN fund_return_2003_q4 COMMENT '基金2003年第四季度收益',
CHANGE COLUMN fund_return_2003_q3 COMMENT '基金2003年第三季度收益',
CHANGE COLUMN fund_return_2003_q2 COMMENT '基金2003年第二季度收益',
CHANGE COLUMN fund_return_2003_q1 COMMENT '基金2003年第一季度收益',
CHANGE COLUMN fund_return_2002_q4 COMMENT '基金2002年第四季度收益',
CHANGE COLUMN fund_return_2002_q3 COMMENT '基金2002年第三季度收益',
CHANGE COLUMN fund_return_2002_q2 COMMENT '基金2002年第二季度收益',
CHANGE COLUMN fund_return_2002_q1 COMMENT '基金2002年第一季度收益',
CHANGE COLUMN fund_return_2001_q4 COMMENT '基金2001年第四季度收益',
CHANGE COLUMN fund_return_2001_q3 COMMENT '基金2001年第三季度收益',
CHANGE COLUMN fund_return_2001_q2 COMMENT '基金2001年第二季度收益',
CHANGE COLUMN fund_return_2001_q1 COMMENT '基金2001年第一季度收益',
CHANGE COLUMN fund_return_2000_q4 COMMENT '基金2000年第四季度收益',
CHANGE COLUMN fund_return_2000_q3 COMMENT '基金2000年第三季度收益',
CHANGE COLUMN fund_return_2000_q2 COMMENT '基金2000年第二季度收益',
CHANGE COLUMN fund_return_2000_q1 COMMENT '基金2000年第一季度收益',
CHANGE COLUMN fund_alpha_3years COMMENT '基金3年阿尔法',
CHANGE COLUMN fund_beta_3years COMMENT '基金3年贝塔',
CHANGE COLUMN fund_mean_annual_return_3years COMMENT '基金3年平均年收益',
CHANGE COLUMN fund_r_squared_3years COMMENT '基金3年R平方',
CHANGE COLUMN fund_stdev_3years COMMENT '基金3年标准差',
CHANGE COLUMN fund_sharpe_ratio_3years COMMENT '基金3年夏普比率',
CHANGE COLUMN fund_treynor_ratio_3years COMMENT '基金3年特雷诺比率',
CHANGE COLUMN fund_alpha_5years COMMENT '基金5年阿尔法',
CHANGE COLUMN fund_beta_5years COMMENT '基金5年贝塔',
CHANGE COLUMN fund_mean_annual_return_5years COMMENT '基金5年平均年收益',
CHANGE COLUMN fund_r_squared_5years COMMENT '基金5年R平方',
CHANGE COLUMN fund_stdev_5years COMMENT '基金5年标准差',
CHANGE COLUMN fund_sharpe_ratio_5years COMMENT '基金5年夏普比率',
CHANGE COLUMN fund_treynor_ratio_5years COMMENT '基金5年特雷诺比率',
CHANGE COLUMN fund_alpha_10years COMMENT '基金10年阿尔法',
CHANGE COLUMN fund_beta_10years COMMENT '基金10年贝塔',
CHANGE COLUMN fund_mean_annual_return_10years COMMENT '基金10年平均年收益',
CHANGE COLUMN fund_r_squared_10years COMMENT '基金10年R平方',
CHANGE COLUMN fund_stdev_10years COMMENT '基金10年标准差',
CHANGE COLUMN fund_sharpe_ratio_10years COMMENT '基金10年夏普比率',
CHANGE COLUMN fund_treynor_ratio_10years COMMENT '基金10年特雷诺比率',
CHANGE COLUMN fund_return_category_rank_ytd COMMENT '基金年初至今收益类别排名',
CHANGE COLUMN fund_return_category_rank_1month COMMENT '基金1个月收益类别排名',
CHANGE COLUMN fund_return_category_rank_3months COMMENT '基金3个月收益类别排名',
CHANGE COLUMN fund_return_category_rank_1year COMMENT '基金1年收益类别排名',
CHANGE COLUMN fund_return_category_rank_3years COMMENT '基金3年收益类别排名',
CHANGE COLUMN fund_return_category_rank_5years COMMENT '基金5年收益类别排名',
CHANGE COLUMN load_adj_return_1year COMMENT '负荷调整后1年收益',
CHANGE COLUMN load_adj_return_3years COMMENT '负荷调整后3年收益',
CHANGE COLUMN load_adj_return_5years COMMENT '负荷调整后5年收益',
CHANGE COLUMN load_adj_return_10years COMMENT '负荷调整后10年收益',
CHANGE COLUMN sustainability_score COMMENT '可持续性评分',
CHANGE COLUMN sustainability_rank COMMENT '可持续性排名',
CHANGE COLUMN esg_peer_group COMMENT 'ESG同业组',
CHANGE COLUMN esg_peer_count COMMENT 'ESG同业数量',
CHANGE COLUMN esg_score COMMENT 'ESG评分',
CHANGE COLUMN peer_esg_min COMMENT '同业ESG最低',
CHANGE COLUMN peer_esg_avg COMMENT '同业ESG平均',
CHANGE COLUMN peer_esg_max COMMENT '同业ESG最高',
CHANGE COLUMN environment_score COMMENT '环境评分',
CHANGE COLUMN peer_environment_min COMMENT '同业环境最低',
CHANGE COLUMN peer_environment_avg COMMENT '同业环境平均',
CHANGE COLUMN peer_environment_max COMMENT '同业环境最高',
CHANGE COLUMN social_score COMMENT '社交评分',
CHANGE COLUMN peer_social_min COMMENT '同业社交最低',
CHANGE COLUMN peer_social_avg COMMENT '同业社交平均',
CHANGE COLUMN peer_social_max COMMENT '同业社交最高',
CHANGE COLUMN governance_score COMMENT '治理评分',
CHANGE COLUMN peer_governance_min COMMENT '同业治理最低',
CHANGE COLUMN peer_governance_avg COMMENT '同业治理平均',
CHANGE COLUMN peer_governance_max COMMENT '同业治理最高';

ALTER TABLE MutualFundPrices 
CHANGE COLUMN fund_symbol COMMENT '基金代码',
CHANGE COLUMN price_date COMMENT '价格日期',
CHANGE COLUMN nav_per_share COMMENT '每股净值';

-- 为 ETFs 表添加中文注释
ALTER TABLE ETFs 
SET COMMENT '包含交易所交易基金(ETF)的详细信息,包括基金代码、名称、类别、资产配置等';

-- 为 ETFPrices 表添加中文注释
ALTER TABLE ETFPrices 
SET COMMENT '记录交易所交易基金(ETF)每日价格信息,包括开盘价、收盘价、最高价、最低价等';

-- 为 MutualFunds 表添加中文注释
ALTER TABLE MutualFunds 
SET COMMENT '包含共同基金的详细信息,包括基金代码、名称、类别、资产配置、管理人信息等';

-- 为 MutualFundPrices 表添加中文注释
ALTER TABLE MutualFundPrices 
SET COMMENT '记录共同基金每日净值信息,包括基金代码、价格日期、每股净值等';

任务四:将CSV文件里的数据加载到云器Lakehouse的表中

人总是喜欢简单的,加载数据这个活,试试云器Lakehouse内置的数据上传功能,期望点几下鼠标就能完成:

image.png

读取csv文件,最后一列多读了个空格还是什么特殊字符,导致string类型转整型失败了。小遇挫折。(补充一下:后来有同学反馈发现是换行符需要设置为\r\n,而不是缺省的\n,就可以了,如下:)

image.png

想想,云器Lakehouse内置的数据加载功能,还有离线同步这种方式。但是不支持从本地文件同步,那就把数据放在阿里云的对象存储,从对象存储OSS加载到云器Lakehouse的表中。

将本地文件上传到阿里云OSS,推荐使用OSS浏览器,一款笔者用了10年的老工具:

image.png

然后在云器Lakehouse里新建一个数据源,连上阿里云OSS:

image.png

新建几个离线同步任务:

image.png

很顺利,一次成功。最大的表有7千多万条记录,不少呢!

任务五:检查导入到云器Lakehouse的数据

image.png

image.png

检查表结构、表注释、字段注释都有的。

✅话说为什么一定要给表、字段加上注释呢?因为后面会用到大模型分析数据,所以从数据工程师的工作开始,就是把数据处理的要对大模型友好啦!好的AI来自好的数据么!

任务六:用云器DataGPT对数据进行探索

说到数据分析,笔者也有一个用了10几年的老工具,就是Tableau。不过这次笔者不打算用Tableau了,也不打算用SQL来分析数据了。云器Lakehouse内置了对话式分析工具DataGPT,AI加持的工具,体验一下看看如何呢。

内置就是好,刚才在Lakehouse里建好的表,导进来的数据,那是拿来就用,省了数据同步,减少了数据不一致。

image.png

只要将Lakehouse的表添加进DataGPT的数据集,DataGPT就会自动为表的数据创建数据档案,对每个字段的数据分布进行统计分析,方便快速了解数据。

任务七:在DataGPT创建指标

明确的指标定义可以避免产生歧义。虽然可以让大模型发挥进行语义理解和匹配,但是会带来很大的不确定性,为了提高问题理解到精准性,通过指标名称可以做到精准匹配。指标定义内容是通过SQL来表达从而来提升生成SQL的准确性。

https://tq2pllvokz.feishu.cn/space/api/box/stream/download/asynccode/?code=NTNlMDQ3NjViYTY1ODg2ZGI4MTExMjQ0M2RhODlhZThfeXZlNXhCY1B1VGw2Y2FXVmxHY2N1MGdOa0JFN3pQY1pfVG9rZW46WXRhQmJ2eEU2b3V3T0R4VEpuRWNQYkdnbnhiXzE3MjQxMjE5NTk6MTcyNDEyNTU1OV9WNA

任务八:创建单独的域

域(Domain)划分:将数据集表、指标、文件等对象,按照不同业务域进行隔离,避免产生歧义;如:销售业绩在财务域与销售域的指标定义。本实验中为US Funds dataset from Yahoo Finance数据集及相关指标创建了如下单数的域(Domain):

https://tq2pllvokz.feishu.cn/space/api/box/stream/download/asynccode/?code=MWUwYmE5NmUxZDE1NGUyY2ExYjZlY2IyYTZmMjllYTdfVzYxbFBrUmVSWkw1SUxoMW94WlQ2OE1KeGVQektKUGZfVG9rZW46QjM5OGJYS0FWb3FWMTJ4SlRKSWM4OXdCbjZ0XzE3MjQxMjE5ODg6MTcyNDEyNTU4OF9WNA

任务九:在DataGPT进行数据分析

https://tq2pllvokz.feishu.cn/space/api/box/stream/download/asynccode/?code=OWI0OGY3ODMwOTM5MWVlMjMwNWMwMDgzMjk1ZmFiMzNfZDF6SHZQMnZRandqS1ZYeDMwZjZxZmJhcHZaRThVNWJfVG9rZW46Q0I2V2JSMko3b2VqTGd4bXdBdmNCdTNmbktkXzE3MjQxMjE5ODg6MTcyNDEyNTU4OF9WNA

💡每年的CP?CP是啥?

CP不是Cose Play,而是收盘价的黑话:

image.png

通过精细且准确的指标定义,我们成功地大幅提升了大模型在将文本语义转换为 SQL 语句时的准确性。这种指标定义不仅涵盖了语义理解的深度和广度,还包括了对语法结构和逻辑关系的精确把握。它为大模型提供了明确的方向和标准,使其能够更加准确地捕捉文本中的关键信息,并将其转化为准确无误的 SQL 翻译。

总结

本文讨论了在云器 Lakehouse 上处理 Kaggle 数据集中的 US Funds dataset from Yahoo Finance 的过程,包括生成表结构的 DDL 语句、建模存放数据、添加中文注释、加载数据、检查数据以及使用 DataGPT 进行探索分析等任务。

关键要点包括:

  • 生成 DDL 语句: 使用 Python 程序根据 CSV 文件生成建表的 DDL 语句,并对日期字段数据类型和表名进行规范。
  • 建模存放数据: 对表的列进行重命名和添加注释,在云器 Lakehouse 中创建 schema 并执行 DDL 语句创建表。
  • 添加中文注释: 借助 Azure Copilot 为表和字段生成中文注释。
  • 加载数据: 尝试内置数据上传功能,因格式问题失败后采用离线同步方式,从阿里云 OSS 加载数据。
  • 检查数据: 检查表结构、表注释和字段注释。
  • 数据探索分析: 使用云器 Lakehouse 内置的 DataGPT 进行数据探索、创建指标和业务域,并进行数据分析。

本次实验仅耗时 4 个小时,便生成了近千行 Python、SQL 代码,效率颇高,整个方案思路追求简单、高效、真实,方案中灵活使用了大模型、Python处理不同的数据工程任务从而达到了简单高效。实验过程中不仅在云器 Lakehouse 中成功构建了可随时扩展的数据模型,还借助 DataGPT 以聊天方式展开数据分析,大幅降低了分析难度,显著提升了分析效率,是对云器 Lakehouse 的一次全新且极具价值的体验。

此外,实验过程中的数据准确性和稳定性也得到了充分保障,为后续的业务决策提供了可靠的支持。同时,在实验中对云器 Lakehouse 的功能有了更深入的了解,为进一步优化和拓展其应用奠定了基础。展望未来,我们相信云器 Lakehouse 将在数据处理和分析领域发挥更大的作用,为企业带来更多的价值和竞争优势。

云器Lakehouse现已开放注册
欢迎申请体验,每个账号开通会获赠一定金额的代金券,助您快速试用体验。如需更多代金券额度,请您联系商务获取。
预约咨询
微信咨询
电话咨询