Как можно сопоставить двоичные столбцы / столбцы UUID?
Столбец определяется как binary(16)
в базе данных и значения UUID
,
База данных MySql.
1 ответ
Вы можете выбрать binary
поле как string
отформатировав его HEX
функция. Типичная схема Cube.js в этом случае будет выглядеть так:
cube(`Users`, {
// ...
dimensions: {
companyId: {
sql: `HEX(${CUBE}.company_uuid)`,
type: `string`
}
}
});
Фильтр для Users.companyId
поле в этом случае будет выглядеть
{
// ...,
filters: [{
dimension: "Users.companyId",
operator: "equals",
values: ["0123456789ABCDED0123456789ABCDEF"]
}]
}
Если у вас есть индекс по этому binary
столбец, который вы, вероятно, хотите намекнуть планировщик запросов MySQL с FILTER_PARAMS
поэтому его можно использовать:
cube(`Users`, {
sql: `SELECT * FROM users WHERE ${FILTER_PARAMS.Users.companyId.filter(
v => `company_uuid = UNHEX(${v})`
)}`,
// ...
dimensions: {
companyId: {
sql: `HEX(${CUBE}.company_uuid)`,
type: `string`
}
}
});
Узнайте больше о FILTER_PARAMS
здесь: https://cube.dev/docs/cube.