创建网站需要备案吗,贵州专业建网站,做网络运营需要掌握什么,律师做推广宣传的网站这是在实现多表关联时想到的。我们现在这套体系#xff0c;实现多表关联比较复杂。如果Superset能官方支持多表关联#xff0c;不知道会是什么样的方案#xff0c;复杂度如何。在公式这个层面#xff0c;没有关联条件#xff0c;只有两个列、或者多个列#xff0c;相互之…这是在实现多表关联时想到的。我们现在这套体系实现多表关联比较复杂。如果Superset能官方支持多表关联不知道会是什么样的方案复杂度如何。在公式这个层面没有关联条件只有两个列、或者多个列相互之间该如何计算-*/。-由此可知在展开公式之前结果集要先进行join以保证列计算时每一行被正确的对齐了。-查找基础KPI、分组、查询的操作不需要改变。在获取df之后merge各个df要提前到展开公式之前。如果没有定义join条件呢join是在结果集层面定义的两个结果集如何关联起来。如果查询的结果集是单结果集完全不影响在公式里引用来自其他结果集的KPI这个时候是没有join条件的。--在程序中要把这种情况当成错误来处理即KPI公式中出现的其他KPI不能来自join定义之外。-在逐层嵌套的KPI定义体系中可能存在需要到本层join定义之外再去下层获取join条件的情况假设KPI有4层第1层的join条件很可能无法把第4层的数据集关联起来。所以join条件也需要迭代处理。每一层都需要join操作。当前的策略是独立查询各个table的数据关联条件作用在pandas.DataFrame之间每个DataFrame中可能包含不需要的数据即不满足join条件的数据也可能会被加载到DataFrame中。再考虑到每个查询中limit的存在会有部分满足条件的数据不会出现在join之后的结果集中。--这个问题没找到完善的解决方案pandas的merge行成一个独立的DataFrame存在列名重复的可能。--参见这个讨论https://stackoverflow.com/questions/19125091/pandas-merge-how-to-avoid-duplicating-columns--来自两个DataFrame的列如果重名可以用suffixes函数控制列名加什么后缀。--https://blog.csdn.net/brucewong0516/article/details/82707492--所以这个问题至少是可以解决的。过滤条件如果有的话应该和join一起处理。细节待定展开公式的逻辑-从KPI到换算成列2019-08-06补充Context写二叉树代码的时候就在想拼接公式时要不要加一个上下文。今早模糊想到的确需要一个上下文Context。拼接公式是从叶子节点开始如果叶子节点是KPI要查到对应的KPI属于哪个数据集一旦涉及两个或多个KPI之间的运算就有可能需要join才能计算否则不对齐的行之间运算没有意义。join之后呢就需要有个地方保存这个join出来的数据集而且还要供公式树上的上一级节点使用。假设有Dataset_1/Dataset_2/Dataset_3三个数据集。Dataset_1 『KPI_1/KPI_2/KPI_3』Dataset_2 『KPI_4/KPI_5』Dataset_3 『KPI_6/KPI_7』KPI_2 KPI_5 KPI_7KPI_3 KPI_6 KPI_7对KPI_3来说KPI_6/KPI_7属于同一个数据集不需要先join再计算。对KPI_2来说KPI_5/KPI_7不属于同一个数据集需要先join Dataset_2、Dataset_2再计算否则两个数据集的行没对齐计算得到的结果没有实际意义。公式展开的过程就是计算得到pandas.core.series.Series的过程同一个数据集的各个KPI即是多个pandas.core.series.Series数据集是pandas.core.series.Series的集合也就是一个pandas.DataFrame。对完全由公式KPI构成的数据集遍历KPI展开公式就是计算Series保存到DataFrame。即在查询数据时一个数据集和一个DataFrame对应。把Series加到DataFrame可以参考https://stackoverflow.com/questions/12555323/adding-new-column-to-existing-dataframe-in-python-pandas见joaquin的回答2017年更新的方法是调用assign把Series加入到DataFrame。2019-08-08补充如果需要动态命名新增列可以参考 https://stackoverflow.com/questions/39767718/pandas-assign-with-new-column-name-as-string--从2019年3月开始重新做Superset二次开发快五个月了像是把2017年想要实现但没条件实现的功能都实现了。是不是又要告一段落了呢