如何使用1-M关系和regex_extract在Tableau中使用计算联接

时间:2019-06-17 18:02:36

标签: regex join tableau one-to-many regex-group

问题1-Tableau是否能够在Join操作期间使用全局变量将REGEXP中单行的多个结果与另一个表进行比较?如果否,则问题2为空。如果是...

问题2-我试图在计算的联接中使用正则表达式联接Tableau中的两个数据源,因为左表在每个单元格中有1个值(即64826),而右表在每个单元格中有4个可能的匹配项(即00000 | 00000 | 21678 | 64826)。

问题是我的正则表达式在找到1个匹配项(4个值中的第一个)后停止寻找,并且全局变量/ g产生了与我预期相反的效果,并消除了所有匹配项。

我在“数据源”选项卡上尝试了计算的联接。我也尝试过使用以下方法将这4个值分离到工作表中自己的列中 regexp_extract_nth。在这两种情况下,正则表达式都停止照看第一个结果。左联接似乎有些起作用,而外联接什么也不返回。

REGEXP_EXTRACT([Event Number],'(\d{5})')
REGEXP_EXTRACT_NTH([Event Number],'(?!0{5})(\d{5})',1)

在这些示例中,即使右表中有64826,regex也会将NULL与左表匹配。我希望计算得出的联接将返回正确集合中的所有可能的匹配项,因此在21678和64826上将存在匹配项,像这样在右表中复制行...

21678 - 00000|00000|21678|64826
64826 - 00000|00000|21678|64826
45245 - 45106|45245|00000|00000
45106 - 45106|45245|00000|00000

1 个答案:

答案 0 :(得分:0)

您的原始表达式很好,我们可能要确保在Tableau中发送正确的命令,但我不确定,也许让我们尝试类似以下表达式:

<?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $post_from_Rpi = file_get_contents('php://input');
        $log_file = fopen('test.txt','a') or die("Unable to open the file");
        fwrite($log_file, $post_from_Rpi);
        fclose($log_file);
    }
?>

即使只是为了测试,也可以将命令修改为:

\b([^0]....)\b

或:

REGEXP_EXTRACT([Event Number], '\b([^0]....)\b')

看看会发生什么。我假设所需的数字不是以REGEXP_EXTRACT_NTH([Event Number], '\b([^0]....)\b', 1) 开头。

Please see the demo here

Reference