SPLIT_PART 对于 LDAP

SPLIT_PART for LDAP

我想了解是否有一种方法可以在 Snowflake 中使用 SPLIT_PART 来分解 LDAP 成员中的用户。如果不是SPLIT_PART,还有其他方法吗?

以下作为单个记录存在,我想将其拆分为三个记录,仅提取 CN。

CN=John Doe,OU=Enabled Users,OU=User Accounts,DC=COM;CN=Mark Stu,OU=Enabled Users,OU=User Accounts,DC=COM;CN=Rachel Gail,OU=Enabled Users,OU=User Accounts,DC=COM

我想将它们拆分为

我想我能够得到我的答案,但如果有人发布更好的代码,我会把不同的方法标记为答案。

SELECT  SUBSTRING(c.value::string, CHARINDEX('CN=', c.value::string) + LEN('CN='), 
                    CHARINDEX(',OU=', c.value::string) - CHARINDEX('CN=', c.value::string) - LEN('CN=')) AS EMPLOYEE
FROM    Table_A,
LATERAL FLATTEN(input=>split(MEMBER, ';')) c
;

我认为 split_to_table 可能更容易一些,但如果你的工作正常的话应该没问题:

select substr(split("VALUE", ',')[0], 4) from TABLE_A, table(split_to_table(MEMBER, ';'));

假设您有一个名为 TABLE_A 的 table,其中一个名为 MEMBER 的列包含 LDAP 字符串。