Cube.js-2 개 이상의 테이블을 조인 할 수 없지만 "조인 할 조인 경로를 찾을 수 없음"오류가 계속 표시됨

teej2542

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 개의 테이블 만 쿼리하려고했지만 여전히 동일한 오류가 발생했습니다. 누군가 내가 이것을 작동시키기 위해 내가 놓친 것을 지적 할 수 있습니까?

Trapenok Victor

참고 : 이제 공식 문서에보다 완전하고 정답이 있습니다 .

"조인 할 조인 경로를 찾을 수 없습니다 ..."오류는 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관