2015-08-07 2 views
0

Я создаю панель мониторинга Pentaho CDE, и у меня возникли трудности с настройкой того, как дата отображается в линейной диаграмме. В приведенной ниже таблице является то, что я в это время:Pentaho - Как показать полную дату в оси X линейной диаграммы

line chart

Как вы можете видеть, ось X имеет число от 1-6, они месяцев. То, что я хочу сделать, это показать больше информации на этой оси, а не просто 1, я хочу показать «январь/2013», например, но я понятия не имею, как я могу это достичь. Моя Mondrian схема для измерения даты заключается в следующем:

<Dimension type="TimeDimension" visible="true" foreignKey="data_id" highCardinality="false" name="Data"> 
    <Hierarchy name="data" visible="true" hasAll="true"> 
     <Table name="dimensao_data"> 
     </Table> 
     <Level name="ano" visible="true" column="ano" type="Numeric" uniqueMembers="true" levelType="TimeYears" hideMemberIf="Never"> 
     </Level> 
     <Level name="semestre" visible="true" column="semestre" type="Numeric" uniqueMembers="false" levelType="TimeHalfYears" hideMemberIf="Never" captionColumn="labelSemestre"> 
     </Level> 
     <Level name="quarto" visible="true" column="quarto" type="Numeric" uniqueMembers="false" levelType="TimeQuarters" hideMemberIf="Never" captionColumn="labelQuarto"> 
     </Level> 
     <Level name="mes" visible="true" column="mes" type="Numeric" uniqueMembers="false" levelType="TimeMonths" hideMemberIf="Never" captionColumn="labelMes"> 
     </Level> 
     <Level name="dia" visible="true" column="dia" type="Numeric" uniqueMembers="false" levelType="TimeDays" hideMemberIf="Never"> 
     </Level> 
    </Hierarchy> 
</Dimension> 

и это MDX я использую, чтобы получить данные для диаграммы:

SELECT NON EMPTY {[Measures].[valor]} ON COLUMNS, 
NON EMPTY CrossJoin({[pagamento.forma].[moeda].MEMBERS}, {[Data.data].[mes].MEMBERS}) ON ROWS 
FROM [Vendas] 
WHERE {[Empresa.empresa].[MATRIZ]} 

НОВАЯ ИНФОРМАЦИЯ

Когда я используйте режим отладки. Я вижу, что Data.data не приходит только с месячным значением и в формате String:

[pvc.LineChart     ]: DATA SOURCE SUMMARY 
╔═════════╤═════════════════════╤═════════════╤══════════╗ 
║ Name │ pagamento.forma  │ Data.data │ valor ║ 
╟─────────┼─────────────────────┼─────────────┼──────────╢ 
║ Label │      │    │   ║ 
╟─────────┼─────────────────────┼─────────────┼──────────╢ 
║ Type │ String    │ String  │ Numeric ║ 
╟─────────┼─────────────────────┼─────────────┼──────────╢ 
║ 1  │ "BOLETO BANCARIO" │ "1"   │ 10469.15 ║ 
║ 2  │ "BOLETO BANCARIO" │ "2"   │ 16279.45 ║ 
║ 3  │ "BOLETO BANCARIO" │ "3"   │ 16279.45 ║ 
║ 4  │ "BOLETO BANCARIO" │ "4"   │ 5810.3 ║ 
║ 5  │ "BOLETO BANCARIO" │ "5"   │ 16279.45 ║ 
║ 6  │ "BOLETO BANCARIO" │ "6"   │ 5810.3 ║ 
║ 7  │ "CARTÃO DE CRÉDITO" │ "1"   │ 10243.57 ║ 
║ 8  │ "CARTÃO DE CRÉDITO" │ "2"   │ 9178.03 ║ 
║ 9  │ "CARTÃO DE CRÉDITO" │ "3"   │ 10273.08 ║ 
║ 10  │ "CARTÃO DE CRÉDITO" │ "4"   │ 10110.4 ║ 
║ 11  │ "CARTÃO DE CRÉDITO" │ "5"   │ 10366.3 ║ 
║ 12  │ "CARTÃO DE CRÉDITO" │ "6"   │ 10768.75 ║ 
║ 13  │ "CARTÃO DE DÉBITO" │ "1"   │ 15584.84 ║ 
║ 14  │ "CARTÃO DE DÉBITO" │ "2"   │ 12400.53 ║ 
║ 15  │ "CARTÃO DE DÉBITO" │ "3"   │ 13517.65 ║ 
╟─────────┼─────────────────────┼─────────────┼──────────╢ 
║ (15/41) │      │    │   ║ 
╚═════════╧═════════════════════╧═════════════╧══════════╝ 

Итак, я считаю, что проблема связана с результатом Data.data. Как я могу приобрести полную дату для показа в диаграмме?

ответ

0

Есть несколько способов достижения этой цели:

  1. На уровне запроса:

определить меру, которая содержит информацию, которую Вы хотите отобразить:

With member [Measures].[Date Label] as [data].CurrentMember.Caption || "/" || Ancestor([data].CurrentMember, [data].[ano]).Name 

Это должно вы получите «2013/январь» в качестве выхода. Просто отфильтруйте столбцы, которые вы хотите передать в диаграмму при определении запроса CDA.

  1. На уровне диаграммы.

Вы можете изменить отображение диаграммы, играя с помощью PostFetch диаграммы. Что-то вроде

function(data){ 
    var results = data.resultset.map(function(d){ 
     // Tweak the contents of each line of data here 
     // You will want to take the value of d[0] and replace it by 
     // something else. 
     return d; 
    }); 
    data.resultset = results; 
    return data 
} 

Я предпочитаю иметь такого рода вещи сделано на уровне запроса, это делает панель проще понять и поддержать. Но это зависит от специфики.

Смежные вопросы