ここでは、SQL ServerとMySQLを例にして、キャッシュされたレポートをテーブルから手動で削除する方法を紹介します。
SQL Server
- YellowfinリポジトリDBに対してクエリーを実行する前に、Yellowfinを停止してから、リポジトリのバックアップを取得します。
- キャッシュされたレポートの最大保持期間を指定し、指定された期間を超えたキャッシュを削除します。DATETIMEはGMT時間で、書式はyyyymmddhhssです。
例えば:2017042709000000のGMTグリニッジ標準時は2017年04月27日00:00です。 - YellowfinリポジトリDBに対してクエリーを実行してください。
SELECT ri.ReportInstanceId, ri.DocumentId
INTO #temp_table
FROM ContentManagement cm, ReportHeader rh, ReportInstance ri
WHERE cm.ContentEntityCode = 'REPORT'
AND cm.ContentCode = rh.SubCategoryCode
AND rh.ReportId = ri.ReportId
AND ri.DocumentId IS NOT NULL
AND ri.DocumentId != 0
AND ri.RequestTypeCode != 'COMMENT'
AND ri.ReportGMTDateTime < 'DATETIMEHERE';
DELETE FROM ReportInstance
WHERE ReportStatusCode = 'SNAPSHOT'
AND ReportId IN (
SELECT ReportInstanceId
FROM #temp_table
);
UPDATE ReportInstance
SET DocumentId = null
WHERE ReportInstanceId IN (
SELECT ReportInstanceId
FROM #temp_table
);
DELETE FROM DocumentData
WHERE RevisionId IN (
SELECT RevisionId
FROM DocumentRevision
WHERE DocumentId IN(
SELECT DocumentId
FROM #temp_table
)
);
DELETE FROM DocumentRevision
WHERE DocumentId IN(
SELECT DocumentId
FROM #temp_table
);
DELETE FROM DocumentItem
WHERE DocumentId IN (
SELECT DocumentId
FROM #temp_table
);
DROP TABLE #temp_table; - 繰り返しテストを行うことで、レポートのキャッシュだけが削除されたことを確認します。
MySQL
- YellowfinリポジトリDBに対してクエリーを実行する前に、Yellowfinを停止してから、リポジトリのバックアップを取得します。
- キャッシュされたレポートの最大保持期間を指定し、指定された期間を超えたキャッシュを削除します。DATETIMEはGMT時間で、書式はyyyymmddhhssです。
例えば:2017042709000000のGMTグリニッジ標準時は2017年04月27日00:00です。 - YellowfinリポジトリDBに対してクエリーを実行してください。
CREATE TABLE temp_table AS (
SELECT ri.ReportInstanceId, ri.DocumentId
FROM ContentManagement cm, ReportHeader rh, ReportInstance ri
WHERE cm.ContentEntityCode = 'REPORT'
AND cm.ContentCode = rh.SubCategoryCode
AND rh.ReportId = ri.ReportId
AND ri.DocumentId IS NOT NULL
AND ri.DocumentId != 0
AND ri.RequestTypeCode != 'COMMENT'
AND ri.ReportGMTDateTime < 'DATETIME'
);
DELETE FROM ReportInstance
WHERE ReportStatusCode = 'SNAPSHOT'
AND ReportId IN (
SELECT ReportInstanceId
FROM temp_table
);
UPDATE ReportInstance
SET DocumentId = null
WHERE ReportInstanceId IN (
SELECT ReportInstanceId
FROM temp_table
);
DELETE FROM DocumentData
WHERE RevisionId IN (
SELECT RevisionId
FROM DocumentRevision
WHERE DocumentId IN(
SELECT DocumentId
FROM temp_table
)
);
DELETE FROM DocumentRevision
WHERE DocumentId IN(
SELECT DocumentId
FROM temp_table
);
DELETE FROM DocumentItem
WHERE DocumentId IN (
SELECT DocumentId
FROM temp_table
);
DROP TABLE temp_table; - 繰り返しテストを行うことで、レポートのキャッシュだけが削除されたことを確認します。