问答交流

合并三个数据表的方法

由bq13kdee创建,最终由bq13kdee 被浏览 2 用户

from bigmodule import M
import dai
# 假设 M 已在环境中可用
m1 = M.input_features_dai.v30(
    mode="SQL",
    sql="""
    SELECT
        a.date, 
        a.instrument,
        a.* EXCLUDE(date, instrument),
        b.pe_ttm AS pe_ttm,
        b.total_market_cap AS market_cap,
        a.close / m_lag(a.close, 1) AS return_1,
        (a.close - a.open) / a.open AS intraday_return,
        m.netflow_amount_main as net,
        m.inflow_amount_rate_al as inflow
    FROM cn_stock_bar1d a
    LEFT JOIN cn_stock_prefactors b USING (date, instrument)
    LEFT JOIN cn_stock_moneyflow m USING (date, instrument)
    -- WHERE a.date BETWEEN '2023-01-01' AND '2023-01-31' AND a.st_status = 0
        -- 去掉有空值的行
    QUALIFY
    -- QUALIFY 过滤, 在窗口等计算算子之后执行, 比如 m_lag(close, 3) AS close_3, 对于 close_3 的过滤需要放到这里
    -- 去掉有空值的行
        COLUMNS(*) IS NOT NULL
    ORDER BY date, instrument
    """,
    extra_fields="date, instrument",
    m_name="m1"
)
m2 = M.extract_data_dai.v20(
    sql=m1.data,
    start_date="""2023-01-01""",
    start_date_bound_to_trading_date=False,
    end_date="""2024-12-31""",
    end_date_bound_to_trading_date=False,
    before_start_days=90,
    keep_before=False,
    debug=True,
    m_name="""m2"""
)


#但是提示错误
"""
[2025-12-02 17:44:50] INFO: input_features_dai.v30 开始运行 ..[2025-12-02 17:44:50] INFO: sql mode[2025-12-02 17:44:50] INFO: input_features_dai.v30 运行完成 [0.035s].[2025-12-02 17:44:50] INFO: extract_data_dai.v20 开始运行 ..[2025-12-02 17:44:50] [debug    ] 
    SELECT
        a.date, 
        a.instrument,
        a.* EXCLUDE(date, instrument),
        b.pe_ttm AS pe_ttm,
        b.total_market_cap AS market_cap,
        a.close / m_lag(a.close, 1) AS return_1,
        (a.close - a.open) / a.open AS intraday_return,
        m.netflow_amount_main as net,
        m.inflow_amount_rate_al as inflow
    FROM cn_stock_bar1d a
    LEFT JOIN cn_stock_prefactors b USING (date, instrument)
    LEFT JOIN cn_stock_moneyflow m USING (date, instrument)
    -- WHERE a.date BETWEEN '2023-01-01' AND '2023-01-31' AND a.st_status = 0
        -- 去掉有空值的行
    QUALIFY
    -- QUALIFY 过滤, 在窗口等计算算子之后执行, 比如 m_lag(close, 3) AS close_3, 对于 close_3 的过滤需要放到这里
    -- 去掉有空值的行
        COLUMNS(*) IS NOT NULL
    ORDER BY date, instrument
[2025-12-02 17:44:50] WARNING: start_date='2023-01-01', end_date='2024-12-31', query_start_date='2022-10-03 00:00:00' (支持加速 升级资源"") ..

"""
"""
您可以去社区论坛问答交流板块反馈咨询 去发帖>>
---------------------------------------------------------------------------
InvalidInputException                     Traceback (most recent call last)
Cell In[24], line 31
      3 # 假设 M 已在环境中可用
      4 m1 = M.input_features_dai.v30(
      5     mode="SQL",
      6     sql="""
   (...)
     29     m_name="m1"
     30 )
---> 31 m2 = M.extract_data_dai.v20(
     32     sql=m1.data,
     33     start_date="""2023-01-01""",
     34     start_date_bound_to_trading_date=False,
     35     end_date="""2024-12-31""",
     36     end_date_bound_to_trading_date=False,
     37     before_start_days=90,
     38     keep_before=False,
     39     debug=True,
     40     m_name="""m2"""
     41 )

File /opt/pyenv/versions/3.11.8/lib/python3.11/site-packages/bigmodule/modules.py:28, in __call__(self, **kwargs)

File /opt/pyenv/versions/3.11.8/lib/python3.11/site-packages/bigmodule/moduleinvoker.py:218, in module_invoke(name, version, kwargs)

File /opt/pyenv/versions/3.11.8/lib/python3.11/site-packages/bigmodule/moduleinvoker.py:181, in _module_invoke(name, version, kwargs)

File /opt/pyenv/versions/3.11.8/lib/python3.11/site-packages/bigmodule/moduleinvoker.py:44, in _module_run(module, kwargs)

File dist/build/extract_data_dai/v20/__init__.py:78, in v20.run()

File /var/app/enabled/dai/_telemetry.py:128, in wrapper(*args, **kwargs)

File /var/app/enabled/dai/_functions.py:152, in df(self)

InvalidInputException: Invalid Input Error: Attempting to execute an unsuccessful or closed pending query result
Error: Binder Error: Referenced column m.inflow_amount_rate_al not found in FROM clause and can't find in alias map.

LINE 1: ..._amount_rate_al AS inflow FROM cn_stock_bar1d AS a LEFT JOIN cn_stock_prefactors AS b USING (date, instrument) LEFT...
"""

\

标签

数据处理
{link}