Business-Intelligence-MicroStrategy-CommandManager
view release on metacpan or search on metacpan
lib/Business/Intelligence/MicroStrategy/CommandManager.pm view on Meta::CPAN
my $self = shift;
$self->{ACTION} = "UNLOAD ";
$self->{DIRECTION} = "FROM ";
$self->project_cluster(@_);
}
=head2 unlock_configuration
$foo->unlock_configuration;
UNLOCK CONFIGURATION FORCE;
=cut
sub unlock_configuration { return "UNLOCK CONFIGURATION FORCE;"; }
=head2 unlock_project
$foo->unlock_project("project_name");
UNLOCK PROJECT "<project_name>" FORCE;
UNLOCK PROJECT "MicroStrategy Tutorial" FORCE;
=cut
sub unlock_project {
my $self = shift;
$self->{PROJECT} = shift;
if(!defined($self->{PROJECT})) { croak("\nRequired parameter not defined: PROJECT\n"); }
return "UNLOCK PROJECT " . $q . $self->{PROJECT} . $q . " FORCE;";
}
=head2 unregister_project
$foo->unregister_project("project_name");
This command can be used only in 3-tier Project Source Names.
UNREGISTER PROJECT "<project_name>";
=cut
sub unregister_project {
my $self = shift;
$self->{PROJECT} = shift;
if(!defined($self->{PROJECT})) { croak("\nRequired parameter not defined: PROJECT\n"); }
return "UNREGISTER PROJECT " . $q . $self->{PROJECT} . $q . ";";
}
=head2 update_project
$foo->update_project("project_name");
UPDATE PROJECT "<project_name>";
=cut
sub update_project {
my $self = shift;
$self->{PROJECT} = shift;
if(!defined($self->{PROJECT})) { croak("\nRequired parameter not defined: PROJECT\n"); }
return "UPDATE PROJECT " . $q . $self->{PROJECT} . $q . ";";
}
=head2 update_schema
$foo->update_schema(
REFRESHSCHEMA => "TRUE" | "FALSE",
RECALTABLEKEYS => "TRUE" | "FALSE",
RECALTABLELOGICAL => "TRUE" | "FALSE",
RECALOBJECTCACHE => "TRUE" | "FALSE",
PROJECT => "project_name"
);
Optional parameters:
REFRESHSCHEMA => "TRUE" | "FALSE",
RECALTABLEKEYS => "TRUE" | "FALSE",
RECALTABLELOGICAL => "TRUE" | "FALSE",
RECALOBJECTCACHE => "TRUE" | "FALSE",
UPDATE SCHEMA [ REFRESHSCHEMA | RECALTABLEKEYS | RECALTABLELOGICAL | RECALOBJECTCACHE] FOR PROJECT "<project_name>";
UPDATE SCHEMA REFRESHSCHEMA FOR PROJECT "MicroStrategy Tutorial";
UPDATE SCHEMA RECALTABLEKEYS FOR PROJECT "MicroStrategy Tutorial";
UPDATE SCHEMA RECALTABLELOGICAL FOR PROJECT "MicroStrategy Tutorial";
UPDATE SCHEMA RECALOBJECTCACHE FOR PROJECT "MicroStrategy Tutorial";
UPDATE SCHEMA FOR PROJECT "MicroStrategy Tutorial";
UPDATE SCHEMA REFRESHSCHEMA RECALTABLEKEYS RECALTABLELOGICAL RECALOBJECTCACHE FOR PROJECT "MicroStrategy Tutorial";
=cut
sub update_schema {
my $self = shift;
my %parms = @_;
@$self{keys %parms} = values %parms;
my $result;
my @order = qw(REFRESHSCHEMA RECALTABLEKEYS RECALTABLELOGICAL RECALOBJECTCACHE PROJECT);
my @required = qw(PROJECT);
for(@required){
if(!defined($self->{$_})) { croak("\nRequired parameter not defined: " , $_, "\n"); }
}
my @selected;
for(@order) {
exists $parms{$_} ? ( push(@selected, $_) ) : ($self->{$_} = undef);
}
$result .= "UPDATE SCHEMA ";
for(@selected) {
/REFRESHSCHEMA/ && ($self->{REFRESHSCHEMA} eq "TRUE") && do { $result .= "REFRESHSCHEMA " };
/RECALTABLEKEYS/ && ($self->{RECALTABLEKEYS} eq "TRUE") && do { $result .= "RECALTABLEKEYS " };
/RECALTABLELOGICAL/ && ($self->{RECALTABLELOGICAL} eq "TRUE") && do { $result .= "RECALTABLELOGICAL " };
/RECALOBJECTCACHE/ && ($self->{RECALOBJECTCACHE} eq "TRUE") && do { $result .= "RECALOBJECTCACHE " };
/PROJECT/ && do { $result .= "FOR PROJECT " . $q . $self->{PROJECT} . $q . ";"};
}
return $result;
}
=head2 update_structure
$foo->update_structure(
COLMERGEOPTION => "RECENT | MAXDENOMINATOR | NOMERGE",
WHTABLE => "warehouse_table_name",
PROJECT => "project_name"
);
Optional parameters:
WHTABLE => "warehouse_table_name"
UPDATE STRUCTURE COLMERGEOPTION (RECENT | MAXDENOMINATOR | NOMERGE) [FOR WHTABLE "<warehouse_table_name>"] FOR PROJECT "<project_name>";
Notes:
1. Warehouse Partition Table and Non_Relational Table are not supported
2. Warehouse table names are case sensitive; logical table names are not case sensitive
ColMergeOption:
1. RECENT: If a column is discovered in the warehouse, which has the same name as that of an existing column but different data types, the column in the project is updated to have the data type found in the warehouse.
2. MAXDENOMINATOR: Columns with the same name are always treated as the same object if they have compatible data types (i.e., all numeric, all string-text, etc.). The resulting column in the project has a maximum common data type for all the correspo...
3. NOMERGE: Two columns having the same name but different data types are treated as two different columns in the project.
To update structure for a warehouse table, you will need to provide a name. Command Manager will search for the table and update its column structure. All the logical tables using this warehouse table will also get their definitions updated.
If no table name was provided, Command Manager will proceed to update all warehouse tables currently existing in the project.
UPDATE STRUCTURE COLMERGEOPTION MAXDENOMINATOR FOR WHTABLE "DT_YEAR" FOR PROJECT "MicroStrategy Tutorial";
UPDATE STRUCTURE COLMERGEOPTION RECENT FOR PROJECT "MicroStrategy Tutorial";
=cut
sub update_structure {
my $self = shift;
my %parms = @_;
@$self{keys %parms} = values %parms;
my $result;
my @order = qw(COLMERGEOPTION WHTABLE PROJECT);
my @required = qw(COLMERGEOPTION PROJECT);
for(@required){
if(!defined($self->{$_})) { croak("\nRequired parameter not defined: " , $_, "\n"); }
}
my @selected;
for(@order) {
exists $parms{$_} ? ( push(@selected, $_) ) : ($self->{$_} = undef);
}
for(@selected) {
/COLMERGEOPTION/ && do { $result .= "UPDATE STRUCTURE COLMERGEOPTION " . $self->{COLMERGEOPTION} . " "};
/WHTABLE/ && do { $result .= "FOR WHTABLE " . $q . $self->{WHTABLE} . $q . " "};
/PROJECT/ && do { $result .= "FOR PROJECT " . $q . $self->{PROJECT} . $q . ";"};
}
return $result;
}
=head2 user
internal routine
=cut
sub user {
my $self = shift;
my %parms = @_;
@$self{keys %parms} = values %parms;
my $result;
my @order = qw(IMPORTWINUSER USER NAME NTLINK PASSWORD FULLNAME DESCRIPTION LDAPLINK WHLINK WHPASSWORD ALLOWCHANGEPWD ALLOWSTDAUTH CHANGEPWD PASSWORDEXP PASSWORDEXPFREQ ENABLED GROUP);
my @required = qw(USER);
for(@required){
if(!defined($self->{$_})) { croak("\nRequired parameter not defined: " , $_, "\n"); }
}
my @selected;
for(@order) {
exists $parms{$_} ? ( push(@selected, $_) ) : ($self->{$_} = undef);
}
$result .= $self->{ACTION} . "USER ";
for(@selected) {
/^IMPORTWINUSER$/ && do { $result .= "IMPORTWINUSER "; };
/^USER$/ && do { $result .= $q . $self->{USER} . $q . " "};
/^NAME$/ && do { $result .= "NAME " . $q . $self->{NAME} . $q . " "};
/NTLINK/ && do { $result .= "NTLINK " . $q . $self->{NTLINK} . $q . " "};
/^PASSWORD$/ && do { $result .= "PASSWORD " . $q . $self->{PASSWORD} . $q . " "};
/^FULLNAME$/ && do { $result .= "FULLNAME " . $q . $self->{FULLNAME} . $q . " "};
/DESCRIPTION/ && do { $result .= "DESCRIPTION " . $q . $self->{DESCRIPTION} . $q . " "};
/LDAPLINK/ && do { $result .= "LDAPLINK " . $q . $self->{LDAPLINK} . $q . " "};
/WHLINK/ && do { $result .= "WHLINK " . $q . $self->{WHLINK} . $q . " "};
/WHPASSWORD/ && do { $result .= "WHPASSWORD " . $q . $self->{WHPASSWORD} . $q . " "};
/^ALLOWCHANGEPWD$/ && do { $result .= "ALLOWCHANGEPWD " . $self->{ALLOWCHANGEPWD} . " "};
/ALLOWSTDAUTH/ && do { $result .= "ALLOWSTDAUTH " . $self->{ALLOWSTDAUTH} . " "};
/^CHANGEPWD$/ && do { $result .= "CHANGEPWD " . $self->{CHANGEPWD} . " "};
/^PASSWORDEXP$/ && do { $result .= "PASSWORDEXP " . $self->{PASSWORDEXP} . " "};
/^PASSWORDEXPFREQ$/ && do { $result .= "PASSWORDEXPFREQ " . $self->{PASSWORDEXPFREQ} . " "};
/ENABLED/ && do { $result .= $self->{ENABLED} . " "};
( run in 1.256 second using v1.01-cache-2.11-cpan-d7f47b0818f )