处理规则层次结构/树的最佳方法
Posted
技术标签:
【中文标题】处理规则层次结构/树的最佳方法【英文标题】:Best methods for processing a rule hierarchy/tree 【发布时间】:2021-10-11 08:35:07 【问题描述】:我正在使用 Azure SQL 池/突触/SQL DW,并且有一个需要处理的规则层次结构。在每个级别,父级都可以指定是否需要所有 (AND) 或任何 (OR) 子级才能满足规则。层次结构中的每个级别都可以为父级指定不同的条件(因此您可以有一个包含 OR 等的 AND 条件)
在纯 SQL 中,这可以实现为一个循环,该循环从叶级别开始,并通过将层次结构左连接到要评估的数据上来解析每个级别。任何不符合条件的数据都会从数据集中删除。通过计算存在的不同子项数和匹配的子项数来处理 AND 条件。
这会创建大量复杂的 SQL 来维护,并且使用效率较低的循环。我怀疑图形功能在这里可能是一个更好的结构,但看不到任何真正有助于处理的内置功能。同样,hierarchyid 听起来很合适,但我不相信它存在于 Azure Synapse/Pools/DW
【问题讨论】:
【参考方案1】:Azure Synapse Analytics 专用 SQL 池不支持 SQL Server box 产品和 Azure SQL DB 中可用的图表或 hierarchyId。因此,您最好的选择可能是使用附近的 Azure SQL DB 来执行此处理。使用 Azure 数据工厂 (ADF) 或 Synapse Pipelines 在它们之间移动数据。
另外,我已经回答了一些问题,我认为它们很好地涵盖了在 Synapse 中使用图形或分层数据以及一些方法
其中包括:使用 Azure SQL DB、使用 WHILE
循环以及使用 Azure Synapse Notebooks 和 GraphFrames 库:
第二个问题特别透彻。
【讨论】:
以上是关于处理规则层次结构/树的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章