2

こんにちは、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) からエイリアスを生成しているようですが、ここではうまくいきません。

スキーマに言及する他の方法はありますか? そして、二重引用符を取り除く方法は?

4

1 に答える 1