logsta sh sql_last_value сбрасывается до 0 при перезапуске - PullRequest
0 голосов
/ 21 апреля 2020

Кажется, переменная sql_last_value сбрасывается при каждом перезапуске logsta sh. Согласно документации следует посмотреть last_run_metadata_path для последнего сохраненного значения.

  • У меня есть 2 входа из двух разных таблиц, и оба создают отдельные last_run_metadata_path.
  • На кулачном входе есть столбец отслеживания с типом numeric
  • Второй вход имеет столбец отслеживания с типом timestamp

Я вижу, что last_run_metadata_path обновляется, но sql_last_value сбрасывается до 0 в случае столбца отслеживания с типом numeric и правильно отслеживает sql_last_value в случае столбца отслеживания с типом timestamp.

Вот мой ввод -

jdbc {
    jdbc_driver_library => "C:\sqljdbc_6.4\enu\mssql-jdbc-6.4.0.jre8.jar"
    jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
    jdbc_connection_string => "jdbc:sqlserver://host:1433;databaseName=db"
    jdbc_user => "user"
    jdbc_password => "pwd"
    schedule => "* * * * * *"
    statement => "SELECT * FROM LOG WHERE s_no  > :sql_last_value"
    use_column_value => true
    tracking_column_type => "numeric"
    tracking_column => "s_no"
    last_run_metadata_path => "C:\Users\xyz\.custom_log"
    type => "log"
  }

jdbc {
    jdbc_driver_library => "C:\sqljdbc_6.4\enu\mssql-jdbc-6.4.0.jre8.jar"
    jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
    jdbc_connection_string => "jdbc:sqlserver://host:1433;databaseName=db"
    jdbc_user => "user"
    jdbc_password => "pwd"
    schedule => "* * * * * *"
    statement => "select * from INFO WHERE update_date > :sql_last_value "
    tracking_column_type => "timestamp"
    tracking_column => "update_date"
    last_run_metadata_path => "C:\Users\xyz\.info"
    type => "info"
  }

Для заметки я предполагаю, что clean_run => false по умолчанию.

1 Ответ

0 голосов
/ 21 апреля 2020

Проблема в настройке use_column_value .

Описание из документов:

При значении true использует определенное значение tracking_column в качестве: sql_last_value. Если установлено значение false, то: sql_last_value отражает время последнего выполнения запроса.

Это означает, что: sql_last_value ссылается не на значение в last_run_metadata_path, а на значение tracking_column-value. При перезапуске Logsta sh это значение пропадает / неизвестно до первого выполнения. Следовательно, значение по умолчанию равно 0.

Это объясняет, почему ваш второй jdb c -вход работает правильно, так как он не использует настройку use_column_value.

Так что если вы хотите, чтобы: sql_last_value выживает, перезапускается, вы должны полагаться только на last_run_metadata_path и удалить настройку use_column_value.

...