deepfos.lib.sysutils.complete_cartesian_product

deepfos.lib.sysutils.complete_cartesian_product(fix, df=None, paths=None, folder_ids=None, col_dim_map=None)

构造完整的维度成员笛卡尔积

参数
  • fix (Dict[str, Union[str, list]]) – 需要构造笛卡尔积的维度表达式,字典格式,key为维度名,值为维度成员组成的list,或维度表达式字符串

  • df (Optional[DataFrame]) – 如果需要为现有DataFrame补全笛卡尔积,传入一个df。如果不传,则是生成fix中维度成员的笛卡尔积。

  • paths (Union[str, Dict[str, str], None]) – fix中维度的path,如果所有维度的目录相同,传同一个path,否则传字典,key为维度名,value为path。 如果不传,则自动寻找维度对应的path。

  • folder_ids (Union[str, Dict[str, str], None]) – 类似paths, 但值是folder_id

  • col_dim_map (Optional[Dict[str, str]]) – data中的列名与实际维度名的映射关系,默认data中的列名与维度名相同

返回类型

DataFrame

返回

维度成员笛卡尔积的DataFrame

示例

# 不传参数df,将返回cost_center,year,period三列的DataFrame
df = complete_cartesian_product(fix={
    'cost_center': 'Base(1001,0)',
    'year': ['2021', '2022'],
    'period': 'Base(TotalPeriod,0)'
})

# 传参数df,将返回account,data,cost_center,year,period五列的DataFrame
df1 = pd.DataFrame([
    {'account': '1002', 'data': '111'},
    {'account': '1003', 'data': '444'}
])
df = complete_cartesian_product(
    fix={
        'cost_center': 'Base(1001,0)',
        'year': ['2021', '2022'],
        'period': 'Base(TotalPeriod,0)'
    },
    df=df1
)

参见

fix参数的字典value可接受list和维度表达式,但list效率更高