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 字符串。
我想了解是否有一种方法可以在 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 字符串。