我有一个每日CSV文件,其中有一列包含从呼叫中心收到的大型地址列表(大约5000 /天),其中一些地址包含城市周围的社区名称,通常在第一个5个字。 在另一个表中,我有一列中所有邻域的确切名称,在同一行的另一列中,我有一个快递名称,在该邻域提供送货服务。
我正在寻找一种动力转轴方法来搜索[地址]栏的每一行&如果找到与邻居名称相似的值,则会给我该社区的快递员姓名。
答案 0 :(得分:0)
免责声明 - 此方法无法处理类似的字词,只能处理完全匹配。
我找到的最简单的方法是制作一个计算表。在Modeling选项卡上,单击New Table并输入此公式。
#include "kvsimple.h"
int main (void) {
// Prepare our context and publisher socket
// zctx_t *ctx = zctx_new ();
zsock_t *publisher = zsock_new (ZMQ_PUB);
zsock_bind (publisher, "tcp://*:5556");
zclock_sleep (200);
zhash_t *kvmap = zhash_new ();
int64_t sequence = 0;
srandom ((unsigned) time (NULL));
while (true) {
// Distribute as key-value message
kvmsg_t *kvmsg = kvmsg_new (++sequence);
kvmsg_fmt_key (kvmsg, "%d", randof (10000));
kvmsg_fmt_body (kvmsg, "%d", randof (1000000));
kvmsg_send (kvmsg, publisher);
kvmsg_store (&kvmsg, kvmap);
}
printf (" Interrupted\n%d messages out\n", (int) sequence);
zhash_destroy (&kvmap);
zsock_destroy (&publisher);
return 0;
}
此交叉连接您的两个表,然后将结果过滤到只能在地址中找到Couriers表中的区域的位置。正如我在免责声明中所说,这只是寻找完全匹配。
然后将其返回到地址表中,添加一个包含此公式的新列。这将在我们刚刚制作的表格中查找地址并返回Courier ID。
Results = SELECTCOLUMNS(
FILTER(CROSSJOIN(Addresses, Couriers), SEARCH(Couriers[District], Addresses[Address], , -1) > 0),
"Address", Addresses[Address],
"CourierID", Couriers[Courier ID]
)
我们需要分两步执行此操作的原因是因为LOOKUPVALUE
函数无法使用表达式。