Метки CFChart исчезают

Я выполняю следующий запрос, и после выполнения QoQ для SECONDCONN я не получаю желаемого результата в своем cfchart.

<!--- QoQ for FIRSTCONN --->
<!--- Master Query --->
<cfquery datasource = "XX.XX.X.XX" name="master1">
     SELECT STR_TO_DATE(date_format(Timedetail,'%m-%d-%Y'),'%m-%d-%Y') as FIRSTCONN
            , COUNT(Timedetail) as FIRSTOccurances
            , EVENTS 
     FROM  MyDatabase
     WHERE EVENTS = "FIRST" 
     GROUP BY FIRSTCONN ;
</cfquery> 

<!--- Detail Query --->
<!--- <cfdump var = "#master#"> --->
<cfquery dbtype="query" name="detail1">
    SELECT  *
    FROM master1 
    WHERE FIRSTCONN  >= <cfqueryparam value="#form.startdate#" cfsqltype="cf_sql_varchar"> 
    AND   FIRSTCONN  <  <cfqueryparam value="#dateAdd('d', 1,form.enddate)#" cfsqltype="cf_sql_varchar">;
</cfquery>  


<!--- QoQ for SECONDCONN --->
<!--- Master Query --->
<cfquery datasource = "XX.XX.X.XX" name="master2">
    SELECT STR_TO_DATE(date_format(Timedetail,'%m-%d-%Y'),'%m-%d-%Y') as SECONDCONN
           , COUNT(Timedetail) as SECONDOccurances
           , EVENTS 
    FROM  MyDatabase
    WHERE EVENTS = "SECOND" 
    GROUP BY SECONDCONN ;
</cfquery> 

<!--- Detail Query --->
<!--- <cfdump var = "#master#"> --->
<cfquery dbtype="query" name="detail2">
    SELECT  *
    FROM   master2 
    WHERE  SECONDCONN  >= <cfqueryparam value="#form.startdate#" cfsqltype="cf_sql_varchar"> 
    AND    SECONDCONN  <  <cfqueryparam value="#dateAdd('d', 1,form.enddate)#" cfsqltype="cf_sql_varchar">;
</cfquery>  


<cfchart format="flash"  chartwidth="1000" chartheight="500" scalefrom="0" scaleto="50000" xAxisTitle="Dates" yaxistitle="Number of Connections">
     <cfchartseries  query="detail1" type="line" itemColumn="FIRSTCONN" valueColumn="FIRSTOccurances" > 
     <cfchartseries  query="detail2" type="line" itemColumn="SECONDCONN" valueColumn="SECONDOccurances" > 
     </cfchartseries>
</cfchart>

По оси X диаграмма отображает правильные startdate, но она перестает отображать даты где-то после средней точки, а остальная часть линейного графика отображается без каких-либо дат, упомянутых на оси X. Что может быть причиной? Даты отображаются правильно, когда я выполнил только один запрос, то есть QoQ для FIRSTCONN.

Прикрепленный Image #1показывает вывод только с одним запросом, то есть QoQ для FIRSTCONN

Image #2предназначен для обоих и показывает нежелательный результат.

Еще один момент, который я заметил, заключается в том, что когда я запускаю запрос только для SECONDCONN, я вижу вывод без каких-либо дат, упомянутых на оси x. В чем может быть причина? Я прикрепил image #3ниже для справки. запрос не изменился.

Код cfchart, который я использую, выглядит следующим образом:

<cfchart format="flash"  
          chartwidth="1000" 
          chartheight="500" 
          scalefrom="0" 
          scaleto="50000" 
          xAxisTitle="Date" 
          yaxistitle="Number of Connections" 
          showLegend = "yes" 
          showMarkers = "yes"
          sortXAxis= "yes"
          tipStyle="MouseDown"
          >



         <cfchartseries  query="detail2" type="line" itemColumn="SECONDCONN " valueColumn="SECONDOccurances" > 

  </cfchartseries>  
</cfchart>  

cfdump второго запроса выглядит следующим образом:

query
RESULTSET   
query
    SECONDCONN                SECONDOCCURANCES   EVENTS
1   {ts '2013-06-24 00:00:00'}  556             SECOND
2   {ts '2013-06-25 00:00:00'}  2710            SECOND
3   {ts '2013-06-26 00:00:00'}  2854            SECOND
4   {ts '2013-06-27 00:00:00'}  6348            SECOND
5   {ts '2013-06-28 00:00:00'}  4285            SECOND
6   {ts '2013-06-29 00:00:00'}  2843            SECOND
7   {ts '2013-06-30 00:00:00'}  875             SECOND
8   {ts '2013-07-01 00:00:00'}  4033            SECOND
9   {ts '2013-07-02 00:00:00'}  3211            SECOND
10  {ts '2013-07-03 00:00:00'}  2882            SECOND
11  {ts '2013-07-04 00:00:00'}  978             SECOND
12  {ts '2013-07-05 00:00:00'}  1727            SECOND
13  {ts '2013-07-06 00:00:00'}  811             SECOND
14  {ts '2013-07-07 00:00:00'}  522             SECOND
15  {ts '2013-07-08 00:00:00'}  2556            SECOND
16  {ts '2013-07-09 00:00:00'}  1160            SECOND
17  {ts '2013-07-10 00:00:00'}  8580            SECOND
18  {ts '2013-07-11 00:00:00'}  2630            SECOND
19  {ts '2013-07-16 00:00:00'}  12              SECOND 

Пожалуйста, дайте мне знать, если я могу ответить на дополнительные вопросы.


person Tan    schedule 17.07.2013    source источник
comment
Нам нужно увидеть дамп запроса, использованного для диаграммы, чтобы помочь с # 1. Скриншот выложить тоже не помешает. Вопрос №2 должен быть размещен отдельно. Совет. Сначала прочтите документацию по адресу <cfchart>, в частности атрибут URL-адреса.   -  person Leigh    schedule 18.07.2013
comment
@Leigh Я прикрепил изображения и обновил свой пост. Пожалуйста, взгляните на это.   -  person Tan    schedule 18.07.2013
comment
Как видите, даты на втором изображении перестали отображаться после 2013-07-10.   -  person Tan    schedule 18.07.2013
comment
Это не может быть настоящий код, так как нет определения для запроса с именем detail. Не говоря уже о том, что вы нарисовали детальный запрос дважды... Можете ли вы опубликовать фактический код, сгенерировавший диаграмму на снимке экрана? Кроме того, есть ли причина, по которой вы используете QoQ вместо фильтрации в запросе database.   -  person Leigh    schedule 18.07.2013
comment
@Leigh Прошу прощения за путаницу. Я обновил код. Сейчас я использую Detail1 и Detail 2. Опубликованный код является фактическим кодом сейчас.   -  person Tan    schedule 18.07.2013
comment
QoQ быстрее, поэтому я его использую. Надеюсь, это ответит на ваш вопрос?   -  person Tan    schedule 18.07.2013


Ответы (2)


Не видя дампа данных запроса, я предполагаю, что механизм построения диаграмм, возможно, решил, что слишком много значений для разумного отображения на оси X. (Я проверил ваш код, и он отлично работает с CF9). Попробуйте использовать меньший диапазон дат и посмотрите, появятся ли метки даты снова. В этом случае вам может потребоваться настроить параметры диаграммы. чтобы получить лучшую посадку. Вот некоторые из соответствующих настроек стиля.

Тестовый код

<cfset detail1 = queryNew("")>
<cfset queryAddColumn(detail1, "FIRSTCONN", "date", listToArray("2013-07-31,2013-08-15,2013-08-17"))>
<cfset queryAddColumn(detail1, "FIRSTOccurances", listToArray("3,5,6"))>

<cfset detail2 = queryNew("")>
<cfset queryAddColumn(detail2, "SECONDCONN", "date", listToArray("2013-08-10,2013-08-18,2013-08-20"))>
<cfset queryAddColumn(detail2, "SECONDOccurances", listToArray("4,10,8"))>
<cfchart format="flash"  xAxisTitle="Dates" yaxistitle="Number of Connections">
       <cfchartseries  query="detail1" type="line" itemColumn="FIRSTCONN" valueColumn="FIRSTOccurances" /> 
       <cfchartseries  query="detail2" type="line" itemColumn="SECONDCONN" valueColumn="SECONDOccurances" /> 
</cfchart>

QoQ быстрее, поэтому я его использую.

Честно говоря, это не лучший подход для обработки медленных запросов. Лучшее место для оптимизации запроса к БД — это база данных. Потратьте время, чтобы изучить план запроса и найти узкое место, добавить соответствующие индексы и так далее. Используя QoQ, вы берете на себя много дополнительных сетевых операций в час, извлекая много дополнительных данных, которые в конечном итоге отбрасываются. Не говоря уже о памяти, необходимой для создания нового набора результатов. Это много потраченных впустую ресурсов и не будет хорошо масштабироваться.

(Тем не менее, я полагаю, что вы уже открыли отдельную ветку, посвященную скорости запросов. Поэтому вместо того, чтобы снова смешивать вопросы, я оставлю этот разговор для другой вашей ветки.)

person Leigh    schedule 17.07.2013
comment
Я попытался запустить запрос только для FIRSTCONN, комментируя все остальные Qoq (для SECONDCONN, THIRDCONN) и т. д.) для длинного диапазона дат, и он отлично работает. Однако, когда я пытаюсь упомянуть SECONDCONN и другие, метка начинает исчезать. Неважно, длинный у меня диапазон дат или короткий. Кроме того, поскольку я использую Coldfusion 8, будет ли работать только что упомянутая вами ссылка для Coldfusion 9? - person Tan; 18.07.2013
comment
Кроме того, почему ось X автоматически отображает даты, хотя я ничего явно не упомянул в своем коде? - person Tan; 18.07.2013
comment
Хорошо, как вы определяете короткий диапазон дат? Сколько записей? С CF9 работает нормально. (Позже я проверю под CF8.) Можете ли вы попробовать обновленный пример выше? Что касается ссылки, инструмент построения диаграмм по ссылке существует со времен MX7. Единственная разница в том, что в более поздних версиях он имеет больше функций. - person Leigh; 18.07.2013
comment
Эй, тестовый код отлично работает для двух линейных диаграмм. Обе линейные диаграммы отображаются до конца. - person Tan; 18.07.2013
comment
1) Но почему он отлично работает в случае, когда я показываю только одну линейную диаграмму. Я полагаю, что объем данных остается прежним для одной линейной диаграммы или нескольких линейных диаграмм 2) Могу ли я настроить свой запрос так же, как вы? Вероятно, мне интересно, как бы я отображал большое количество дат в listtoArray ()? - person Tan; 18.07.2013
comment
Ручной запрос не имеет к этому никакого отношения. С вашей однолинейной диаграммой меньше дат для диаграммы. Ради аргумента предположим, что первый запрос содержит 20 дат (или 20 точек данных). Затем второй запрос содержит еще 30 точек данных, всего 50. Достаточно места для отображения первых 20 дат/меток, но не всех 50. Есть смысл? - person Leigh; 18.07.2013
comment
Я понимаю. Да, это имеет смысл. Спасибо. Я играю со стилями диаграммы и пытаюсь выяснить причину. - person Tan; 19.07.2013
comment
давайте продолжим обсуждение в чате - person Tan; 19.07.2013

Проблема была решена, когда я изменил порядок отображения линейного графика. Я имею в виду, что я отображал в порядке возрастания моды следующим образом:

<cfchartseries  query="detail1" type="line" itemColumn="FIRSTCONN" valueColumn="FIRSTOccurances" > 
<cfchartseries  query="detail2" type="line" itemColumn="SECONDCONN" valueColumn="SECONDOccurances" > and so on till seventh connection.

Когда я начал отображать его в уменьшении, как показано ниже:

<cfchartseries  query="detail7" type="line" itemColumn="SEVENTHCONN" valueColumn="SEVENTHOccurances" > 
    <cfchartseries  query="detail6" type="line" itemColumn="SIXTHCONN" valueColumn="SIXTHOccurances" > and so on till FIRST CONNECTION

Проблема была решена, но я не уверен, что было причиной этого.

person Tan    schedule 29.07.2013