任何人都可以帮忙将下面的qlikview代码转换为雪花SQL吗?
我刚刚开始从 qlikview 到雪花迁移,并且对 qlikview 的了解非常少,因此需要有关
applymap
在这里如何工作的帮助:
Left Join(EXCEL_REQ_PO_MSTR)
LOAD PO_STATUS_KEY,IF(POD_SCHED='1',ApplyMap('EXCEL_PO_STATUS_SCHEDULED',PO_STATUS_KEY,null()),
ApplyMap('EXCEL_PO_STATUS_UNSCHEDULED',POD_NBR,null()))
AS PO_STAT_DESC
RESIDENT EXCEL_REQ_PO_MSTR;
EXCEL_PO_STATUS_SCHEDULED:
MAPPING
LOAD PO_STATUS_KEY,PO_STAT;
SQL SELECT DISTINCT CONCAT_WS('|',POD_NBR,POD_LINE,POD_PART,POD_LOC,POD_PO_SITE,POD_DUE_DATE) as PO_STATUS_KEY,
/*SELECT DISTINCT CONCAT_WS('|',POD_NBR,POD_LINE,POD_PART,POD_LOC,POD_SITE,POD_DUE_DATE) as PO_STATUS_KEY,*/
CASE
WHEN "POD_END_EFF##1" IS NULL
THEN 'open'
ELSE 'closed'
END AS PO_STAT
FROM PROD_RAW.EXCEL_QADDB.VW_POD_DET
WHERE LENGTH(TRIM(POD_NBR))>0 /*AND
SUBSTR(TRIM(POD_NBR),1,1) IN ('P')*/ AND SUBSTR(TRIM(POD_NBR),2,1) IN ('0','1','2','3','4','5','6','7','8','9')
AND LENGTH(TRIM(POD_PART))>0;
EXCEL_PO_STATUS_UNSCHEDULED:
MAPPING
LOAD PO_STATUS_KEY,PO_STAT;
SQL SELECT DISTINCT PO_NBR AS PO_STATUS_KEY,CASE
WHEN PO_STAT IS NULL
THEN 'open'
ELSE 'closed'
END AS PO_STAT
FROM PROD_RAW.EXCEL_QADDB.VW_PO_MSTR;
我尝试了以下转换:
SELECT
CASE
WHEN POD_SCHED = '1' THEN
(SELECT PO_STATUS_KEY FROM dev_marts.purchasing.EXCEL_PO_STATUS_SCHEDULED)
ELSE
(SELECT pod_nbr FROM dev_marts.purchasing.EXCEL_PO_STATUS_UNSCHEDULED)
END AS PO_STAT_DESC
from dev_marts.purchasing.EXCEL_REQ_PO_MSTR;
这是一个使用一些组成字段的示例,这些字段比您给出的示例简单得多,但您将能够应用该概念。
Qlik 脚本:
DESC_MAP:
MAPPING
LOAD
ItemNum as ItemCode,
ItemName as Desc
FROM [lib://QVData/UserDescriptions.qvd]
(qvd);
ITEMS:
LOAD
ItemCode,
applymap('DESC_MAP', ItemCode, null()) as UserDesc
FROM [lib://QVData/Items.qvd]
(qvd);
相当于
select
ItemCode,
(Select ItemName FROM UserDescriptions where Items.ItemCode = UserDescriptions.ItemNum) as CommodityClassDesc
from Items
您应该能够将复杂的地图创建 SQL 查询粘贴到 CASE 查询逻辑中,然后您仍然需要将 POSTATUS_KEY 添加到 where 子句以使其每次返回唯一的行