As of December 1, 2020, Focal Point is retired and repurposed as a reference repository. We value the wealth of knowledge that's been shared here over the years. You'll continue to have access to this treasure trove of knowledge, for search purposes only.
Join the TIBCO Community TIBCO Community is a collaborative space for users to share knowledge and support one another in making the best use of TIBCO products and services. There are several TIBCO WebFOCUS resources in the community.
From the Home page, select Predict: WebFOCUS to view articles, questions, and trending articles.
Select Products from the top navigation bar, scroll, and then select the TIBCO WebFOCUS product page to view product overview, articles, and discussions.
Request access to the private WebFOCUS User Group (login required) to network with fellow members.
Former myibi community members should have received an email on 8/3/22 to activate their user accounts to join the community. Check your Spam folder for the email. Please get in touch with us at community@tibco.com for further assistance. Reference the community FAQ to learn more about the community.
I have three data sources which are connected to a sql server database. These tables contain a boat load of data. When I go to query for data, I mostly receive an Html type of time out error. Is there any way to speed up data process time through Web Focus. I have 5.2.3. Thanks for any assistance.
Performance enhancement is such a wide subject that the only way for us to tell is for you to post your query .FEX together with the .MAS es being queried.
Regards
John
Server: WF 7.6.2 ( BID/Rcaster) Platform: W2003Server/IIS6/Tomcat/SQL Server repository Adapters: SQL Server 2000/Oracle 9.2 Desktop: Dev Studio 765/XP/Office 2003 Applications: IFS/Jobscope/Maximo
Posts: 888 | Location: Airstrip One | Registered: October 06, 2006
Here's the fex for one of the queries: -* File cvtappevent.fex
JOIN APP_EVENTS.APPLICATION IN APP_EVENTS TO BUSSEG01.APPCRYPTIC IN BUSSEG01 AS J0 End
TABLE FILE APP_EVENTS SUM 'CNT.APP_EVENTS.BUSSEG1/I7' AS 'Total Calls'
BY 'APP_EVENTS.BUSSEGA' NOPRINT BY 'APP_EVENTS.BUSSEG1' -*WHERE event_partkey EQ 2007061800 WHERE event_partkey GE 2007060100 AND event_partkey LE 2007061800 -*WHERE APP_EVENTS.APPLICATION EQ '1st_Horizon_2' WHERE (machine_id EQ 'PPNTVA08') OR (machine_id EQ 'PPNTVA17') OR (machine_id EQ 'PPNTVA07') OR (machine_id EQ 'PPNTVA16') OR (machine_id EQ 'PPNTVA04') OR (machine_id EQ 'PPNTVA13') OR (machine_id EQ 'PPNTVA05') OR (machine_id EQ 'PPNTVA12') OR (machine_id EQ 'PPNTVA14') OR (machine_id EQ 'PPNTVA03') OR (machine_id EQ 'PPNTVA19') OR (machine_id EQ 'PPNTVA06') OR (machine_id EQ 'PPNTVA20') OR (machine_id EQ 'PPNTVA15') WHERE event_action EQ 'CHAIN'
ON TABLE PCHOLD FORMAT EXCEL END
.mas's that go with are: 1. app_events FILE=app_events, SUFFIX=SQLMSS SEGNAME=APP_EVENTS, SEGTYPE=S0, $ FIELD=INSTANCE_ID, ALIAS=instance_id, USAGE=I11, ACTUAL=I4, $ FIELD=MACHINE_ID, ALIAS=machine_id, USAGE=A32, ACTUAL=A32, $ FIELD=EVENT_ORDER, ALIAS=event_order, USAGE=I11, ACTUAL=I4, $ FIELD=EVENT_PARTKEY, ALIAS=event_partkey, USAGE=I11, ACTUAL=I4, $ FIELD=APPLICATION, ALIAS=application, USAGE=A60, ACTUAL=A60, MISSING=ON, $ FIELD=EVENT_DATE, ALIAS=event_date, USAGE=HYYMDs, ACTUAL=HYYMDs, MISSING=ON, $ FIELD=EVENT_TYPE, ALIAS=event_type, USAGE=A24, ACTUAL=A24, MISSING=ON, $ FIELD=EVENT_NAME, ALIAS=event_name, USAGE=A64, ACTUAL=A64, MISSING=ON, $ FIELD=EVENT_ACTION, ALIAS=event_action, USAGE=A12, ACTUAL=A12, MISSING=ON, $ FIELD=EVENT_RESULT, ALIAS=event_result, USAGE=A64, ACTUAL=A64, MISSING=ON, $ FIELD=RESULT_VALUE, ALIAS=result_value, USAGE=TX50, ACTUAL=TX, MISSING=ON, $ FIELD=SPEECH_CLASS, ALIAS=speech_class, USAGE=A32, ACTUAL=A32, MISSING=ON, $ FIELD=TIMEOUT, ALIAS=timeout, USAGE=A1, ACTUAL=A1, MISSING=ON, $ FIELD=EVENT_DATA, ALIAS=event_data, USAGE=TX50, ACTUAL=TX, MISSING=ON, $ FIELD=IRAPT_SEQ, ALIAS=irapt_seq, USAGE=P20, ACTUAL=P10, $ FIELD=TRANSACTION_DATE, ALIAS=transaction_date, USAGE=HYYMDs, ACTUAL=HYYMDs, MISSING=ON, $ DEFINE BUSSEGA/I1 = DECODE APPLICATION(Various defines);$ DEFINE BUSSEG/I1 = IF BUSSEGA NE 9 THEN BUSSEGA ELSE 10;$ DEFINE BUSSEG1/A20 = IF BUSSEG EQ 1 THEN 'Markets' ELSE IF BUSSEG EQ 2 THEN 'CCM' ELSE IF BUSSEG EQ 3 THEN 'Business Bank' ELSE IF BUSSEG EQ 4 THEN 'Specialty' ELSE IF BUSSEG EQ 5 THEN 'Market Spanish' ELSE IF BUSSEG EQ 6 THEN 'Other' ELSE IF BUSSEG EQ 7 THEN '900 Verif.' ELSE IF BUSSEG EQ 8 THEN 'BB Spanish' ELSE 'OTHER';$
What took my attention is that you are joining two fields (APPLICATION and APPCRYPTIC which are both long and do not have the same picture (A60 and A50) and also are "missing=on".
I wonder if this would ever work without a problem... Is it an outerjoin or an inner join?
Are there many records in the busseg01 table?
I also see you have a defined field in the master that has the same name but an other picture as in the other master. Rather tricky....why is this?
It looks as if the joined table does in fact the same as the defines. So try to build the report without the join and see if that works.
Frank
prod: WF 7.6.10 platform Windows, databases: msSQL2000, msSQL2005, RMS, Oracle, Sybase,IE7 test: WF 7.6.10 on the same platform and databases,IE7
Posts: 2387 | Location: Amsterdam, the Netherlands | Registered: December 03, 2006
Due to the fact that you are sorting BY a DEFINE field as well as trying to CNT a DEFINE field, most likely WebFOCUS is pulling all the data over and then handling the aggregation itself. This is because complicated DEFINEs will not translate into SQL. I would also try using the IN LIST selection operator for the WHERE clasuse on MACHINE_ID. It also appears that you are not referencing any fields in the JOINed file. Am I missing something? You may want to eliminate the JOIN if you are not using any fields in the joined file.
Thanks!
Mickey
FOCUS/WebFOCUS 1990 - 2011
Posts: 995 | Location: Gaithersburg, MD, USA | Registered: May 07, 2003
If that does not work This will show the SQL generated - Please can you post together with counts on the tables involved.
-* File sqltrace.fex -* check on includes translation SET TRACEUSER=ON SET TRACEOFF=ALL SET TRACEON=STMTRACE/1/CLIENT SET TRACEON=SQLAGGR/1/CLIENT -*SET TRACEON=WHOPT/1/CLIENT SET TRACEON=SQLTRANS/3/CLIENT SET TRACEON=? SET XRETRIEVAL=OFF SET EMPTYREPORT=OFF
Server: WF 7.6.2 ( BID/Rcaster) Platform: W2003Server/IIS6/Tomcat/SQL Server repository Adapters: SQL Server 2000/Oracle 9.2 Desktop: Dev Studio 765/XP/Office 2003 Applications: IFS/Jobscope/Maximo
Posts: 888 | Location: Airstrip One | Registered: October 06, 2006
I've never had any formal FOCUS training. I have to rebuild pre-existing reports due to a new report server that include a complete overall of the data table layout. I created this specific report off of studio developer 5.2 or something like that.
I'll look into these suggestions and get back to you with the results. Thanks again for all of your comments.
Also check to see if the fields you are joining to are indexed. If they aren't, there's a performance hit. Are the fields you reference in the WHERE statements indexed? Are you referencing BUSSEG1 in the first or second table? Try using the tablename.fieldname format to clarify. Also, in many cases doing most of your logic on defined fields will just kill any efficiencies you would otherwise get from the DBMS. Getting the SQL statement as Frank suggest will probably give you the best idea of what the problem is.
Regards,
Darin
In FOCUS since 1991 WF Server: 7.7.04 on Linux and Z/OS, ReportCaster, Self-Service, MRE, Java, Flex Data: DB2/UDB, Adabas, SQL Server Output: HTML,PDF,EXL2K/07, PS, AHTML, Flex WF Client: 77 on Linux w/Tomcat
Posts: 2298 | Location: Salt Lake City, Utah | Registered: February 02, 2007
One you have captured the SQL try running as native SQL against the server in SQLServer. See what happens. I have seen things that where SQL part ran in seconds, but the data transfer and formatting by WebFocus took minutes.
My preference for any SQL data source is extract the data into a hold file. I apply all the possible data selection and summarization.
I then apply any defines to the hold file. This reduces the change of the WebFocus trying to retrieve and process the entire SQL table.
Jim Morrow Web Focus 7.6.10 under Windows 2003 MVS 7.3.3
ROWS is a reserved word used to specify a praticular sort order and usually followed by a byfield. Not quite sure why it's in there as I could find no other reference as to what ROWS would be, but take it out.
Regards,
Darin
In FOCUS since 1991 WF Server: 7.7.04 on Linux and Z/OS, ReportCaster, Self-Service, MRE, Java, Flex Data: DB2/UDB, Adabas, SQL Server Output: HTML,PDF,EXL2K/07, PS, AHTML, Flex WF Client: 77 on Linux w/Tomcat
Posts: 2298 | Location: Salt Lake City, Utah | Registered: February 02, 2007
Thanks for all your responses. Nothing is working even when using hold files. Everything keeps timing out or not working. I'm going to have to rethink things and figure something out. My DBA advised using stored procedures. One did work but the other did not. It timed out. I was thinking about using a hold file when running stored procedures. Is this possible?
how long is it taking, in minutes.... there may be something odd set within your browser.
Also, SQL optimization is usually a collaborative effort between a database developer and a DBA, it may be best to consult one of those if you have them about the issue. Indexing the tables on the joined values would be a good start, then I'd look into using an Integer format rather than an alphanumeric for numeric data like what you're joining on. Plain and simple, there's only 10 numbers but there's a few hundred alphanumeric characters (in reality, this method doesn't save as much time as properly indexing the table, or partitioning your data, or using a materialized view of the data to pre-aggregate information sans stuff like ID numbers)
DBA's are our friends.
Prod: Single Windows 2008 Server running Webfocus 7.7.03 Reporting server Web server IIS6/Tomcat, AS400 DB2 database.
Try putting an END after the SQL command, see if it works. I had a similiar scenario where it took awhile to get the data but after adding the END statement, it's much faster now.
Dev: WebFOCUS 7.6.10, Data Migrator 7.6.10 QA: WebFOCUS 7.6.10, Data Migrator 7.6.10 Prod: WebFOCUS 7.6.2, Data Migrator 7.6.8 Windows 2K3, Tomcat 5.5.17, IIS 6 Usage: HTML, PDF, Excel, Self-serve, BID and MRE
Posts: 197 | Location: Roseville, CA | Registered: January 24, 2005
I agree about putting the 'end' statement in. I had a similar situation going against oracle engine. The 'end' seemed to help. Also indexing definitely a plus if you can sway the powers that be. Ira
JOE, if you look at the defines in the Master File Description they are based on a field called APPLICATION so to create your hold file start with this.
JOIN
APP_EVENTS.APPLICATION IN APP_EVENTS TO
BUSSEG01.APPCRYPTIC IN BUSSEG01 AS J0
END
TABLE FILE APP_EVENTS
SUM
CNT.APPLICATION
BY APPLICATION
-*WHERE event_partkey EQ 2007061800
WHERE event_partkey GE 2007060100 AND event_partkey LE 2007061800
-*WHERE APP_EVENTS.APPLICATION EQ '1st_Horizon_2'
WHERE (machine_id EQ 'PPNTVA08') OR (machine_id EQ 'PPNTVA17') OR (machine_id EQ 'PPNTVA07') OR (machine_id EQ 'PPNTVA16') OR (machine_id EQ 'PPNTVA04') OR (machine_id EQ 'PPNTVA13') OR (machine_id EQ 'PPNTVA05') OR (machine_id EQ 'PPNTVA12') OR (machine_id EQ 'PPNTVA14') OR (machine_id EQ 'PPNTVA03') OR (machine_id EQ 'PPNTVA19') OR (machine_id EQ 'PPNTVA06') OR (machine_id EQ 'PPNTVA20') OR (machine_id EQ 'PPNTVA15')
WHERE event_action EQ 'CHAIN'
ON TABLE HOLD AS HOLD1
END
Then create your DEFINES for the DECODE and other login against the HOLD1 file.