Tableau Server Reports IMpact Analysis - report

Is there a way to search across all of Tableau Server to determine if a table and/or column is being used? I read that xml for the reports are in a postgres database. How do I access that db or is there an easier way. We need to drop tables/columns but need to know which reports will break.

Related

Where are hash table implemented on the database or server code?

I'm reading on hash table and data structure, and one question come to mind. Where is hash table implemented? Is it on server code or database?
The resource I've read seems to implement them on the server code, but isnt storing data the job of database? PS: I've havent get to a point of knowing non-sql database yet, maybe that's where my knowledge lack.
Many applications need to store some data internally, even if they're also using or updating data in a database at times. Often they'll even retrieve related data from a remote (across the network) database and have it available in RAM on the local machine for the application to access quickly.
Other times, an application may use a data structure such as a hash table to support some application behaviours that are not part of the business data model, and therefore don't belong in the database. For example, a GUI application might keep help strings to display when the mouse hovers over a widget/button/whatever - they might be stored in a hash table keyed on some GUI object identifier, screen region or whatever the GUI library finds useful to help it display the tooltips at the right time. Another application might keep a table of usernames and activity statistics that it generated by scraping some website - it might display them to the user on demand, or aggregate them or something, without ever saving them down to a database (historic data may be of no value, and it can scrape the website again).
In summary - non-trivial programs tend to use hash tables to provide quick access to the data they consult or manipulate, whether the programs are themselves databases, applications that do also use databases, or applications that run without any database support.

Kibana without Elastic search

As we know Elasticsearch stores, search and analyses data and then shows it on Kibana. But I have my data already stored in PostgreSQL and we have to deal with huge data, so storing it in Elasticsearch for seeing a graph on Kibana is not good. There will be duplication like we have same data in Postgres as well as in Elasticsearch and I have huge data (full traffic from a telecom company) and we want to build a reporting tool.
Kibana has all the features that we want but we don't want this duplication of data. I mean we want to use only Kibana. Is it possible? And what should I do to avoid this problem? What are the possibilities?
My opinion. If you have all this data, and it is not in a non-sql, document database, your are going about it the wrong way. Either it's elasticsearch or mongo, you should use that kind of databases.
As far as I know, there is no way of using Kibana to display information from something other than Elasticsearch.
You could check out Grafana http://grafana.org/, it has that and more.
Good luck.
For connecting to SQL databases, Tableau is one of the best options. As I worked with both Tableau and Kibana, I can tell that Tableau supports almost all operations that are supported by Kibana and also Tableau can generate graphs for complex visualizations like
sum(field1)/ sum(field2) over values of field3.
which can not be generated by using Kibana.
This is way late, but the way I would tackle this is to write an app that pulls data out of your database and publishes to elasticsearch. Sure there is duplication of data, but you can focus on only that data you care about. You also wouldn't be querying against a production database when displaying charts in kibana, which can add its own complications.

How do we make sure the record is being locked?

In Oracle EBS, when we are doing data conversions and interfaces, loading data into Oracle from another system, how do we make sure the record is being locked? How do we make sure no other person is updating our records?
Oracle EBS seeded API's will take care about locking. We don't insert data into EBS base tables directly,
validate the data and insert into interface tables later we run oracle standard programs to import interface tables data into base tables.
These oracle standard programs use oracle seeded API to insert data into multiple base tables.
How do we make sure no other person is updating our records?
Developers use their own custom staging tables to import data into EBS.
when data upload staging tables to interface table maintain each interface data source is different, usually other persons don't update other interfaces records, We can't track if anyone updated from database backend tools like sql developer or TOAD. we can track transaction from last updated by column if they update from applications
If you have any specific issue related locking let us know

Retrieve thousands of record in ssrs Report deployed asp.net web applications

I have a report deployed in asp.net web application, it works on small amount of data.
But when the data set contains thousands of records It may timeout on client side and data not appears.
So how can we solve this problem and retrieves unlimited amount of data to Client when query this report?
Even without knowing the specifics of your situation, you should look into applying paging to your output report. On the server side, make sure that your query utilizes indexes applied to the source tables.

Best way to create a default Database setup via an .aspx page?

We are going to be selling a service that will be hosted by us, and each client we host will have their own database, but there will be one centralized website. I currently have a blank database with the few things that a new client will need. What is the best way to copy this database so I can setup another client? I want to be able to do this from an .aspx page. Thanks in advance!
Update:
By .aspx page, I just meant that I need to be able to kick off the process from an .aspx page.
Update2:
We're running SQL Server 2008.
Update 3: Referencing Cade Roux's answer... Thanks for a great answer, but...
What is the reason for merging all of the databases into one, and then distinguishing clients based on an identifier in each table? Wouldn't this greatly complicate the architecture of the entire product? I would need to add these Client ID columns to practically every table, and the DAL would need to know which client data its looking for. With the current setup I have, I just switch out the connection string in the DAL, depending on which user is accessing the site. That way, after the connection string is set, I never need to worry about finding client specific data! How do these approaches compare (and should I add this as a separate question?
You have a few different options:
You can detach your empty database, then when a user signs up, copy that database and mount it under a unique name for them and map it to their account in your master database, say.
You can create a database from scratch using scripts and populate any base data either from an online template database or scripting the base data and map it to their account in your master database.
You should seriously consider going to a multi-tenant architecture where all users are in the same database (with most tables having CustomerID columns to segregate the data) if you are going to have more than a few dozen customers.
Regarding your notes about option 3 - it depends on your application. Multi-tenant can be difficult to retrofit. On the other hand, managing and upgrading hundreds of individual customer databases can be difficult in the long haul.
There are previous Stack Overflow questions regarding this:
What are the advantages of using a single database for EACH client?
One database or many?
I think I'll see about re-tagging them with multi-tenant-db or something. Anyhow, I think that this comes up as a consideration secondary to your answer about a particular tactic does show the importance of including details about your overall goals in strategy in every question on StackOverflow.
Depending on what database you're using, there are several approaches. The simplest is to ask your database software to generate SQL code for creating the database and include that with your software. Another would be to just script out in C#/VB the steps needed to recreate your empty database.
Why the need for .aspx page?
You don't say what db version you're using but in SQL2005-2008, you have the ability to "script database as" and then "create to" and have it port the sql to a query window. You could then work with that to create a stored procedure that can be called from your .aspx page.
SQL Server has a system database called 'model'. Any database objects (tables, views, stored procedures) that exist in the model are added to any new database created.
You could create your 'client database' schema as model, and any new database would have all the same tables...
But, if you need to change your database schema later, your best option is to write change scripts which are part of your code-behind file. Since changes to the 'model' database are not propagated to existing databases, the application needs to detect and upgrade the database schema as necessary.
Disadvantage to this approach: If you want a database which isn't a 'client database' then you would need to create the database, and then delete the 'client database' tables.

Resources