こんにちは、vertica で saiku を使用しようとしています。
Vertica には、データベース -> スキーマ -> テーブルという概念があります。したがって、xml ファイルでは、テーブル名の代わりに、schemaName.tableName を指定しています。
<?xml version="1.0"?>
<Schema name="Sales" metamodelVersion='3.6' quoteSql='false'>
<Cube name="Sales" defaultMeasure="sales">
<Table name="schemaName.factName"></Table>
<Dimension name="date_mysql">
<Hierarchy hasAll="true">
<Level name="date" column="date" type="Date" uniqueMembers="false"/>
</Hierarchy>
</Dimension>
<Measure name="sales" aggregator="sum" column="sales" formatString="#,###" />
<Measure name="orders" aggregator="sum" column="orders" formatString="#,###" />
</Cube>
</Schema>
これは機能しているようで、mondrian はメジャーとディメンションを適切に取得できます。問題は、生成された SQL クエリが構文的に間違っていることです
select "schemaName"."tableName"."date" as "c0"
from "schemaName"."tableName" as "schemaName"."tableName"
group by "schemaName"."tableName"."date"
order by CASE WHEN "schemaName"."tableName"."date" IS NULL THEN 1 ELSE 0 END, "schemaName"."tableName"."date" ASC
ここには 2 つの問題があります。
- Vertica は二重引用符をその他の文字として扱うため、「tableName」と tableName は区別されます。( quoteSql='false' はメタモデル 3.6 を使用しているため機能しません)
- Mondrian は、指定されたテーブル名 (ここでは schema.table) からエイリアスを生成しているようですが、ここではうまくいきません。
スキーマに言及する他の方法はありますか? そして、二重引用符を取り除く方法は?