Cube.js를 처음 사용하고 조인을 사용하여 2 개 이상의 테이블에서 데이터를 가져 오려고합니다.
원래 SQL 쿼리는 여러 테이블을 함께 결합하여 3 개 모두의 데이터를 표시하는 다음과 같습니다.
SELECT wo.EndDate AS DueDate, p.PurchaseNumber AS Details, [proc].Name
FROM WorkOrder wo
INNER JOIN Purchase p
ON wo.PurchaseId = p.Id
INNER JOIN Product pr
ON wo.ProductId = pr.Id
INNER JOIN [Procedure] [proc]
ON pr.ProcedureId = [proc].Id
다음은 Cube.js 스키마에 대한 것입니다.
cube(`WorkOrder`, {
sql: `SELECT * FROM dbo."WorkOrder"`,
joins: {
Purchase: {
relationship: `hasMany`,
sql: `${WorkOrder}.PurchaseId = ${Purchase}.Id`
},
Product: {
relationship:`hasMany`,
sql: `${WorkOrder}.ProductId = ${Product.Id}`
},
Procedure: {
relationship: `hasMany`,
sql: `${Product}.ProcedureId = ${Procedure}.Id`
}
},
dimensions: {
id: {
sql: `${CUBE}."Id"`,
type: `number`,
primaryKey: true,
shown: true
},
scheduledstartdate: {
sql: `${CUBE}."ScheduledStartDate"`,
type: `time`
},
scheduledenddate: {
sql: `${CUBE}."ScheduledEndDate"`,
type: `time`
}
}
});
cube(`Purchase`, {
sql: `SELECT * FROM dbo."Purchase"`,
dimensions: {
id: {
sql: `${CUBE}."Id"`,
type: `number`,
primaryKey: true
},
customerpurchasenumber: {
sql: `${CUBE}."CustomerPurchaseNumber"`,
type: `string`
}
}
});
cube(`Product`, {
sql: `SELECT * FROM dbo."Product"`,
dimensions: {
id: {
sql: `${CUBE}."Id"`,
type: `number`,
primaryKey: true
},
name: {
sql: `${CUBE}."Name"`,
type: `string`
}
}
});
cube(`Procedure`, {
sql: `SELECT * FROM dbo."Procedure"`,
dimensions: {
id: {
sql: `${CUBE}."Id"`,
type: `number`,
primaryKey: true
},
name: {
sql: `${CUBE}."Name"`,
type: `string`
},
}
});
그런 다음 이것을 사용하여 Cube.js API에서 쿼리를 시도합니다.
'{"dimensions":["WorkOrder.scheduledenddate", "Purchase.customerpurchasenumber", "Procedure.Name"]}'
그러나 " 'WorkOrder', 'Purchase'에 가입 할 수있는 조인 경로를 찾을 수 없습니다."오류가 계속 표시됩니다. 나는 그것을 더 쉽게 만들고 2 개의 테이블 만 쿼리하려고했지만 여전히 동일한 오류가 발생했습니다. 누군가 내가 이것을 작동시키기 위해 내가 놓친 것을 지적 할 수 있습니까?
참고 : 이제 공식 문서에보다 완전하고 정답이 있습니다 .
"조인 할 조인 경로를 찾을 수 없습니다 ..."오류는 cube.js가 쿼리에서 전달 된 큐브에 대한 조인을 빌드하는 방법을 찾을 수 없을 때 발생합니다.
오류를 수정하려면 조인 매개 변수 를 설명해야합니다.
설명한 관계를 기반으로 cube.js는 노드가 큐브이고 가장자리가 설명한 관계인 유 방향 그래프를 작성합니다.
cube.js는 큐브를 결합 할 때 왼쪽 조인을 사용하므로 쿼리에서 큐브의 순서가 중요합니다.
귀하의 경우 그래프는 다음과 같습니다.
따라서 귀하의 쿼리가 정확합니다.
{"dimensions":["WorkOrder.scheduledenddate", "Purchase.customerpurchasenumber", "Procedure.Name"]}
그러나 예를 들어이 쿼리는 잘못되었습니다.
{"dimensions":["Procedure.name","Purchase.customerpurchasenumber"]}
그래프에는 "Procedure"에서 나가고 "Purchase"로 이어지는 에지가 없기 때문에
오류를 수정하려면 "Procedure"와 "Purchase"간의 관계를 설명하는 "Procedure"큐브의 설명에 조인 매개 변수를 추가하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다