konto usunięte

Temat: wyszukanie pola(kolumny)

Czy jest możliwe odnalezienie nazwy pola w tabeli znając jedną z wartości jakie ono przyjmuje?

Mamy hurtownie danych, pełno baz, pełno tabel. Przykładowo mam odnaleźć pole mówiące np o statusie zamówienia. Oczywiście nie znam struktury ale wiem, że wartość w tym polu powinna wynosić 'C'. Czy można w jakiś sposób odnaleźć nazwe kolumny wiedząc, że ta wartość 'C' występuje tylko w szukanym polu?

Teradata.

konto usunięte

Temat: wyszukanie pola(kolumny)

Piotr M.:
Czy jest możliwe odnalezienie nazwy pola w tabeli znając jedną z wartości jakie ono przyjmuje?

Mamy hurtownie danych, pełno baz, pełno tabel. Przykładowo mam odnaleźć pole mówiące np o statusie zamówienia. Oczywiście nie znam struktury ale wiem, że wartość w tym polu powinna wynosić 'C'. Czy można w jakiś sposób odnaleźć nazwe kolumny wiedząc, że ta wartość 'C' występuje tylko w szukanym polu?

Teradata.

robienie takich numerów na DWH to kiepski pomysł - masz ograniczone zasoby a rzeźbienie po całych tabelach faktów.....

prościej i bezpieczeniej będzie jak sobie na konkretnych TEL-ach będziesz szukał

konto usunięte

Temat: wyszukanie pola(kolumny)


robienie takich numerów na DWH to kiepski pomysł - masz ograniczone zasoby a rzeźbienie po całych tabelach faktów.....

prościej i bezpieczeniej będzie jak sobie na konkretnych TEL-ach będziesz szukał

Zamowienia podałem jako przykład więc na Telach nie moge sie oprzeć i pomijam ograniczone zasoby. Zastanawiam się nad sposobem i czy w ogole jest to możliwe. Jesli tak to jak? ;)

konto usunięte

Temat: wyszukanie pola(kolumny)

Piotr M.:

robienie takich numerów na DWH to kiepski pomysł - masz ograniczone zasoby a rzeźbienie po całych tabelach faktów.....

prościej i bezpieczeniej będzie jak sobie na konkretnych TEL-ach będziesz szukał

Zamowienia podałem jako przykład więc na Telach nie moge sie oprzeć i pomijam ograniczone zasoby. Zastanawiam się nad sposobem i czy w ogole jest to możliwe. Jesli tak to jak? ;)

http://forums.teradata.com/forum/enterprise/to-get-dat...
z pamięci piszę

dbc.columns

masz wszystkie kolumny we wszystkich bazach do których masz dostęp
musiałbyś sobie dynamicznie pobrać kolumny i budować zapytania

do czego zmierzasz? bo takie rzeźbienie jest antywzorcem pracy z bazą

konto usunięte

Temat: wyszukanie pola(kolumny)


do czego zmierzasz? bo takie rzeźbienie jest antywzorcem pracy z bazą

Zmierzam do tego, ze dostajesz zadanie typu. Podaj mi ludzi, ktorzy maja rozmiar buta 43.
Dostajesz namiar na środowisko i wiedze, że w jakims polu musi być wartość 43.
Nie znasz nazw baz, nie znasz, kolumn i nie wiesz gdzie co jest.

dbc.columns jest przydatne wtedy kiedy coś znasz i tego używam a tutaj mi chodzi o to aby odwrocic sytuacje i odnalezc pole, które zawiera wartość X.
Karol Kanicki

Karol Kanicki Freelance BI
consultant @ Icon
plc

Temat: wyszukanie pola(kolumny)

Piotr M.:
dbc.columns jest przydatne wtedy kiedy coś znasz i tego używam a tutaj mi chodzi o to aby odwrocic sytuacje i odnalezc pole, które zawiera wartość X.

no dobra, ale jakos musisz to zapytanie wygenerowac

tzn generowanie w ten sposób to trochę 'brute force' ale nie wydaje mi się by istniał inny sposób

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Łukasz Schabek

Łukasz Schabek Architekt Rozwiązań

Temat: wyszukanie pola(kolumny)

Wojciech Gardziński:

To samo można zrobić pod notatnikiem.

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora

konto usunięte

Temat: wyszukanie pola(kolumny)

Wojciech Gardziński:
1. Eksportujesz tabelki do Excelka
2. Otwierasz pod Excelkiem
3. Przenosisz wszystkie arkusiki, sorka - tabele, do jednego


To jest to o co mi chodzi. Tylko jak to teraz zrobic na samej teradacie.
Robie wszedzie select *, potem od razu szukam w wynikach wartosci 43. Jesli znajdzie to mi podaje kolumne w ktorej znalazl :) Słownie umiem to zrobić ale z narzędziem już nie :)

Dodatkowo problemem jest wielkość tabeli bo nie koniecznie próbka np top 50 moze zawierac watosc 43..a np 4432443 wiersz bedzie ją zawierał.

Twój pomysł dobry jeśli opieramy się do 10 tabel...na więcej by mi się nie chciało.

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Łukasz Schabek

Łukasz Schabek Architekt Rozwiązań

Temat: wyszukanie pola(kolumny)

Eksport zawartości kilku tysięcy tabel do excela to nie jest dobry pomysł...

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora

konto usunięte

Temat: wyszukanie pola(kolumny)

Wojciech Gardziński:
Piotr M.:
Ale, zaraz, moment!...
Twój pomysł dobry jeśli opieramy się do 10 tabel...na więcej by mi się nie chciało.
Toż to g...y problem jest. Jeśli już liczba 10 powoduje zniechęcenie to nie problem, tylko błahostka jaka. Wycofuję więc mój pomysł - tak się rozwiązuje problemy poważne.
A kolega dalej niech pyta na forum...

Oj Oj, ja pisze o automacie a Ty o lenistwie :)

Tak z ciekawości...co masz z tym Excelikiem bo jak nikt o nie mówi to i tak Ty o nim wspomnisz?

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Łukasz Schabek

Łukasz Schabek Architekt Rozwiązań

Temat: wyszukanie pola(kolumny)

Tak jak pisał Karol, można to zrobić 'brute force', wykorzystując mechanizm samplingu oraz procedury składowane:


CREATE PROCEDURE DB_TMP.SZUKAJ ()
SQL SECURITY INVOKER
BEGIN
DECLARE stmt VARCHAR(500);

FOR dbc_columns AS cur1 CURSOR FOR
SELECT DatabaseName, TableName, ColumnName
FROM DBC.Columns
WHERE DatabaseName = 'NAZWA_BAZY'
DO
SET stmt = 'INSERT INTO DB_TMP.ZNALEZIONE ' || 'SELECT ''' || TRIM(dbc_columns.DatabaseName) ||''',''' || TRIM(dbc_columns.TableName) || ''',''' || TRIM(dbc_columns.ColumnName) ||''', ' || TRIM(dbc_columns.ColumnName) || ' FROM ' || TRIM(dbc_columns.DatabaseName) || '.' || TRIM(dbc_columns.TableName) || ' SAMPLE 5';
CALL DBC.SYSEXECSQL(stmt);
END FOR;
END;


Teradata kiepsko radzi sobie z małymi porcjami danych, ale dzięki funkcji SAMPLE jest możliwość zwrócenia niewielkiej ilości rekordów w krótkim czasie. Im większa wartość SAMPLE, tym większe prawdopodobieństwo że znajdziesz to czego szukasz.

Do tego potrzebujesz prostej tabeli na wyniki:


CREATE MULTISET TABLE DB_TMP.ZNALEZIONE, NO FALLBACK, NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT
(
DatabaseName CHAR(32),
TableName CHAR(32),
ColumnName CHAR(32),
ColumnValue CHAR(500) CHARACTER SET UNICODE CASESPECIFIC
);


Po uruchomieniu procedury: CALL DB_TMP.SZUKAJ(); w kolumnie ColumnValue znajdziesz próbki wartości dla poszczególnych kolumn:

SELECT *
FROM DB_TMP.ZNALEZIONE
WHERE ColumnValue LIKE 'C%';

Co do excela, nic do niego nie mam, bardzo dobre narzędzie, ale w tym przypadku prościej wykorzystać mechanizmy które dostarcza baza.Łukasz Schabek edytował(a) ten post dnia 29.08.12 o godzinie 12:47

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Marek Zadęcki

Marek Zadęcki pracownik biurowy i
kadrowy

Temat: wyszukanie pola(kolumny)

Panie Wojciechu w podanym przez Pana linku
Wojciech Gardziński:
http://afin.net/articles/AfinNet_Article_AFIN.NET.IS_P... -

Niestety nie można ściągnąć przykładu dotyczącego Excela.
Ten link http://afin.net/samples/AFIN.NET.InformationServices/A...
w mojej przeglądarce nie działa. Czy mogę prosić o przesłanie tego pliku?

Następna dyskusja:

[MySQL] Kolumny na rzędy




Wyślij zaproszenie do